EXTJS 4.0 核心代碼分析 (一)

最近在着手作一個小型的WEBUI,正好ExtJS4.0放出,和ExtJs3.0對比,變化仍是很大的。this

這裏先着重講一下 ExtJs4.0 Class的實現:code

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 中設定 類後處理器,在原始類創建完成後觸發。it

默認的類預處理有:io

Class.setDefaultPreprocessors(['extend', 'statics', 'inheritableStatics', 'mixins', 'config']);

分別用於 從Ext.Base中繼承始祖類方法屬性,設置類靜態成員,可繼承靜態成員,類集,類配置

默認的類後處理有console

Manager.setDefaultPostprocessors(['alias', 'singleton', 'alternateClassName']);

分別用於 設置別名,是單身類(相似靜態類),交替類名。

由此基本完成一個Class的創建,固然,以上只是粗略的一說,在實際創建過程當中,還會做不少工做,好比:父類的設定,類中this的指定等等,同時,Ext.ClassManager中也有不少的方法用於管理已有類,生成新類等等。table

以上單身類例如:function

Ext.define('Logger', {
    singleton: true,
    log: function(msg) {
        console.log(msg);
    }
});

Logger.log('Hello');
相關文章
相關標籤/搜索