最近在着手做一个小型的WEBUI,正好ExtJS4.0放出,和ExtJs3.0对比,变化还是很大的。
这里先着重讲一下 ExtJs4.0 Class的实现:
ExtJs4.0中,涉及Class实现的主要是Ext Core , Ext.Class, Ext.Base, Ext.ClassManager 这几个对象
在ExtJs4.0中,声明类的方式改为了 Ext.define('ClassName',{}); 这个方法其实是Ext.ClassManager.create的一个别名,在这个过程中,首先通过 Ext.Class建立原始Class,填充应用Ext.define中的配置信息,类预处理器。
Ext.ClassManager 中设定 类后处理器,在原始类建立完成后触发。
默认的类预处理有:
Class.setDefaultPreprocessors(['extend', 'statics', 'inheritableStatics', 'mixins', 'config']);
分别用于 从Ext.Base中继承始祖类方法属性,设置类静态成员,可继承静态成员,类集,类配置
默认的类后处理有
Manager.setDefaultPostprocessors(['alias', 'singleton', 'alternateClassName']);
分别用于 设置别名,是单身类(类似静态类),交替类名。
由此基本完成一个Class的建立,当然,以上只是粗略的一说,在实际建立过程中,还会作很多工作,比如:父类的设定,类中this的指定等等,同时,Ext.ClassManager中也有很多的方法用于管理已有类,生成新类等等。
以上单身类例如:
Ext.define('Logger', { singleton: true, log: function(msg) { console.log(msg); }});Logger.log('Hello');