在項(xiàng)目中使用ExtJS已經(jīng)有一段時(shí)間了, 對(duì)于這個(gè)龐大的Script類庫(kù)有了一定的了解, 在Ext的使用上也有了一定的經(jīng)驗(yàn), 現(xiàn)將這些經(jīng)驗(yàn)做一下總結(jié), 作為一個(gè)入門(mén)材料給大家分享。 對(duì)于Ext庫(kù), 不要被它的龐大所嚇倒, 只要靜下心來(lái)看SDK, 多做一些練習(xí), 還是很容易上手的。
ExtJS 中的類與繼承
在Ext下, 定義一個(gè)JavaScript類似乎沒(méi)有什么特別的, 可以直接聲明一個(gè)構(gòu)造函數(shù), 并使用關(guān)鍵字new來(lái)進(jìn)行初始化。 有一點(diǎn)值得注意的是在Ext中頻繁出現(xiàn)的Singleton類, 普遍定義為:
然后就可以直接調(diào)用Foo的方法了, 其實(shí)這段代碼可以理解為
這樣,就容易理解了。
談到類和繼承, 有幾個(gè)函數(shù)必須注意, Ext.apply、 Ext.applyIf和Ext.extend:
- Ext.apply(obj, config, [defaults]) 將config對(duì)象的所有屬性都復(fù)制到另一個(gè)對(duì)象obj上, 第三個(gè)參數(shù)defaults可以用來(lái)提供默認(rèn)值, 不過(guò)通常指用前兩個(gè)參數(shù)就夠了。 這個(gè)函數(shù)主要用在構(gòu)造函數(shù)中, 用來(lái)將配置復(fù)制到對(duì)象上。
- Ext.applyIf(obj, config) 和Ext.apply的功能類似, 唯一不同的是, 這個(gè)函數(shù)只會(huì)將config對(duì)象中有, 而obj對(duì)象中沒(méi)有的屬性復(fù)制到obj上。
- Ext.extend(subclass, superclass, [overrides]) 用來(lái)繼承已有的類, 通常的使用方法是
var SubClass = function() { SubClass.superclass.constructor.call(this); }; Ext.extend(SubClass, BaseClass, { newMethod : function() {}, overriddenMethod : function() {} };
在上面的代碼中, SubClass繼承自BaseClass, 添加了新的方法newMethod, 重寫(xiě)了overriddenMethod方法。
個(gè)人認(rèn)為, 要扎實(shí)的掌握ExtJS, 并且能夠?qū)υ蓄悗?kù)進(jìn)行擴(kuò)展, 掌握以上的方法是必須的, 也是入門(mén)的必經(jīng)之路。