Ext.ClassManager

Files

在整个框架,Ext.ClassManager类管理字符串的类名称映射到实际类的对象。 一般不直接访问它,而是通过以下这些方法(方便记忆):

基本语法:

Ext.define(className, properties);

属性是一个对象代表了应用类的属性集合。 参见create 更详细的说明。

//构造人类
Ext.define('Person', {
     name: 'Unknown',//不知道姓名
     //构造
     constructor: function(name) {
         if (name) {
             this.name = name;
         }
     },
     //吃
     eat: function(foodType) {
         alert("我吃:" + foodType);

         return this;
     }
});

var aaron = new Person("Aaron");//姓名:Aaron
aaron.eat("Sandwich"); // alert("我吃:三明治");

Ext.Class拥有一套功能强大的可扩展的pre-processors类的创建有关的一切保护, 包括但不限于继承,混入,配置,静态等

继承:

//开发人员
Ext.define('Developer', {
     extend: 'Person',// 人类

     constructor: function(name, isGeek) {
         this.isGeek = isGeek;

         // 适用于从父类的原型方法
         this.callParent([name]);
     },

     code: function(language) {
         alert("I'm coding in: " + language);

         this.eat("Bugs");

         return this;
     }
});

var jacky = new Developer("Jacky", true);//杰克
jacky.code("JavaScript"); // alert("我编写的: JavaScript");
                          // alert("我消灭: Bugs");

调用父类的方法的更多细节,请参阅Ext.Base.callParent

混入:

//演奏吉他

Ext.define('CanPlayGuitar', {
     playGuitar: function() {
        alert("F#...G...D...A");
     }
});
//写歌词
Ext.define('CanComposeSongs', {
     composeSongs: function() { ... }
});
//唱歌
Ext.define('CanSing', {
     sing: function() {
         alert("你知道不知道 知不知道 我等到花儿也谢了...")
     }
});
//音乐家
Ext.define('Musician', {
     extend: 'Person',//人类

     mixins: {
         canPlayGuitar: 'CanPlayGuitar',//弹吉他
         canComposeSongs: 'CanComposeSongs',//写歌词
         canSing: 'CanSing'//唱歌
     }
})
//很酷的人
Ext.define('CoolPerson', {
     extend: 'Person',//人类

     mixins: {
         canPlayGuitar: 'CanPlayGuitar',//弹吉他
         canSing: 'CanSing'//唱歌
     },

     sing: function() {
         alert("啊哈....");

         this.mixins.canSing.sing.call(this);

         alert("[在同一时间玩吉他...]");

         this.playGuitar();
     }
});

var me = new CoolPerson("Jacky");//杰克

me.sing(); // alert("啊哈...");
           // alert("你知不知道 知不知道 我等到花儿也谢了...");
           // alert("[在同一时间玩吉他...]");
           // alert("F#...G...D...A");

配置:

//智能手机
Ext.define('SmartPhone', {
     config: {
         hasTouchScreen: false,//触摸屏
         operatingSystem: 'Other',//操作系统
         price: 500
     },

     isExpensive: false,//价格昂贵

     constructor: function(config) {
         this.initConfig(config);
     },

     applyPrice: function(price) {
         this.isExpensive = (price > 500);

         return price;
     },
     //应用操作系统
     applyOperatingSystem: function(operatingSystem) {
         if (!(/^(iOS|Android|BlackBerry)$/i).test(operatingSystem)) {//苹果iOS/安卓/黑莓
             return 'Other';
         }

         return operatingSystem;
     }
});
//iPhone手机
var iPhone = new SmartPhone({
     hasTouchScreen: true,//智能手机
     operatingSystem: 'iOS'//操作系统
});

iPhone.getPrice(); // 500;
iPhone.getOperatingSystem(); // 'iOS'
iPhone.getHasTouchScreen(); // true;
iPhone.hasTouchScreen(); // true

iPhone.isExpensive; // false;
iPhone.setPrice(600);
iPhone.getPrice(); // 600
iPhone.isExpensive; // true;

iPhone.setOperatingSystem('AlienOS');
iPhone.getOperatingSystem(); // 'Other' 其他

静态:

Ext.define('Computer', {
     statics: {
         factory: function(brand) {
            // 'this' 在静态方法中指向类本身
             return new this(brand);
         }
     },

     constructor: function() { ... }
});
//戴尔电脑
var dellComputer = Computer.factory('Dell');

在类方法访问静态属性,另请参见更多的细节Ext.Base.staticsExt.Base.self 单例

Defined By

Properties

Ext.ClassManager
: Objectprivate
类 所有类通过ClassManager定义。 ...

类 所有类通过ClassManager定义。 键的类的名称和值是对类的引用。

Defaults to: {}

Ext.ClassManager
: Arrayprivate

创建侦听器

Defaults to: []

Ext.ClassManager
: Arrayprivate

默认的后置处理器

Defaults to: []

Ext.ClassManager
: Booleanprivate

启用命名空间解析缓存

Defaults to: true

Ext.ClassManager
: Objectprivate

存在的缓存

Defaults to: {}

Ext.ClassManager
: Arrayprivate

实例化

Defaults to: []

Ext.ClassManager
: Objectprivate

地图

Defaults to: {alternateToName: {}, aliasToName: {}, nameToAliases: {}, nameToAlternates: {}}

Ext.ClassManager
: Objectprivate

创建侦听器名称

Defaults to: {}

Ext.ClassManager
: Objectprivate

命名空间解析缓存

Defaults to: {}

Ext.ClassManager
namespaceRewrites : Objectprivate

命名空间重写

命名空间重写

Ext.ClassManager
: Objectprivate

后置处理器

Defaults to: {}

Defined By

Methods

Ext.ClassManager
( Object className, Object data, Object createdFn )deprecated

定义一个类。

This method has been deprecated since 4.1.0

使用 Ext.define 代替, 因为这也会支持创建覆盖。

Parameters

Ext.ClassManager
( )private

创建Ext.ns,支持命名空间重写

Ext.ClassManager
( Object name, Object args )private

dyn实例

Parameters

Ext.ClassManager
( String name ) : Ext.Class

由它的名称检索类。

Parameters

Returns

Ext.ClassManager
( String name ) : Array

根据类名获取别名

Parameters

Returns

Ext.ClassManager
( String alias ) : Ext.Class

获取别名的引用类。

Parameters

Returns

Ext.ClassManager
( Object object ) : Ext.Class

获取所提供的对象类; 如果它不是任意Ext.define创建的类的一个实例,则返回null。 一般是调用简写Ext.getClass

var component = new Ext.Component();

Ext.ClassManager.getClass(component); // returns Ext.Component

Parameters

Returns

Ext.ClassManager
( Object object ) : String

返回显示名称属性或类名或对象。当所有都失败,返回 "Anonymous"无名氏.

Parameters

Returns

Ext.ClassManager
( Object length )private

得到实例化

Parameters

Ext.ClassManager
( Ext.Class/Object object ) : String
根据其引用的类或它的实例获取名称; 一般是调用简写 Ext.getClassName Ext.ClassManager.getName(Ext.Action); // returns "Ext.Action" ...

根据其引用的类或它的实例获取名称; 一般是调用简写 Ext.getClassName

Ext.ClassManager.getName(Ext.Action); // returns "Ext.Action"

Parameters

Returns

Ext.ClassManager
( String alias ) : String

通过别名获取类名

Parameters

Returns

Ext.ClassManager
( String alternate ) : String

获取类的备用名称

Parameters

Returns

Ext.ClassManager
( String expression ) : String[]

将一个字符串表达式转换到数组匹配的类名。 表达式可以是指类的别名或类名。表达式支持通配符:

 // returns ['Ext.window.Window']
var window = Ext.ClassManager.getNamesByExpression('widget.window');

// returns ['widget.panel', 'widget.window', ...]
var allWidgets = Ext.ClassManager.getNamesByExpression('widget.*');

// returns ['Ext.data.Store', 'Ext.data.ArrayProxy', ...]
var allData = Ext.ClassManager.getNamesByExpression('Ext.data.*');

Parameters

Returns

Ext.ClassManager
( )private

实例化

Ext.ClassManager
( String alias, Object... args ) : Object
实例化类的别名; 一般是调用简写 Ext.createByAlias 如果Ext.Loader类 和enabled类 还没有被定义, 它会尝试通过同步加载类。 ...

实例化类的别名; 一般是调用简写 Ext.createByAlias 如果Ext.Loader类 和enabled类 还没有被定义, 它会尝试通过同步加载类。

var window = Ext.ClassManager.instantiateByAlias('widget.window', { width: 600, height: 800, ... });

Parameters

  • alias : String

    别名

  • args : Object...

    其他参数的别名后,将被传递给类的构造函数。

Returns

Ext.ClassManager
( String className ) : Boolean

检查指定类是否创建

Parameters

Returns

Ext.ClassManager
( Object fn, Object scope, Object className )private

创建

Parameters

Ext.ClassManager
( Object namespace )private

支持命名空间重写。

Parameters

Ext.ClassManager
( String name, Function postprocessor )private

注册一个后置处理器函数。

Parameters

  • name : String

    函数名称

  • postprocessor : Function

    后置处理器函数

Ext.ClassManager
( String name, Object value ) : Ext.ClassManager

引用类设置名称。

Parameters

Returns

Ext.ClassManager
( Ext.Class/String cls, String alias )

注册类的别名。

Parameters

Ext.ClassManager
( String name, String offset, String relativeName ) : Ext.ClassManagerprivate
在堆栈中的特定位置插入后置处理器 可选相对于所有现有的后置处理器 ...

在堆栈中的特定位置插入后置处理器 可选相对于所有现有的后置处理器

Parameters

  • name : String

    后置处理器的名称。 需要注意的是在此之前它需要被registerPostprocessor注册

  • offset : String

    偏移插入位置。四个可能的值有: 'first', 'last', or: 'before', 'after' (第三个参数中提供的名称)

  • relativeName : String

    相对的名称

Returns

Ext.ClassManager
( String/Array postprocessors ) : Ext.ClassManagerprivate

设置默认的后置处理器阵列堆栈,它适用于每个类。

Parameters

  • postprocessors : String/Array

    注册后置处理器的名称或者数组的名称。

Returns

Ext.ClassManager
( String name, Object value )
创建命名空间,并分配 value 创建的对象 Ext.ClassManager.setNamespace('MyCompany.pkg.Example', someObject); alert(MyCompany.pkg.Exam...

创建命名空间,并分配 value 创建的对象

Ext.ClassManager.setNamespace('MyCompany.pkg.Example', someObject);

alert(MyCompany.pkg.Example === someObject); // alerts true 提示 true

Parameters

Ext.ClassManager
( Object className )private

创建触发器

Parameters