Extjs中使用extend(js繼承) 的代碼
更新時(shí)間:2012年03月15日 00:28:05 作者:
Extjs中使用extend(js繼承) 的代碼,抄<深入淺出Extjs>書(shū)
注:抄<深入淺出Extjs>書(shū)
傳統(tǒng)的js實(shí)現(xiàn)繼承操作為:
一:定義一個(gè)父類(lèi)
var BaseClass = function(){
//.....
};
BaseClass.prototype.someMethod = function(){
//.....
};
BaseClass.prototype.overridenMethod = function(){
//....
}
為BaseClass定義兩個(gè)函數(shù)someMethod 和overridenMethod ,,然后定義一個(gè)subClass子類(lèi),可以直接從BaseClass中繼承所有的屬性和函數(shù),
var subClass = function(){
BaseClass.call(this);
};
subClass.prototype = new BaseClass();
subClass.prototype.newMethod = function(){
//...
};
subClass.prototype.overridenMethod = function(){
//...
}
在上面的代碼中,subClass的構(gòu)造函數(shù)首先調(diào)用BaseClass的構(gòu)造函數(shù)初始化數(shù)據(jù),然后通過(guò)subClass.prototype = new BaseClass();這條語(yǔ)句讓subClass類(lèi)獲得BaseClass中的所有屬性和函數(shù)。這樣就實(shí)現(xiàn)了繼承。在此之后我們就可以操作subClass的prototype,為子類(lèi)添加新的函數(shù)或者覆寫(xiě)父類(lèi)的同名函數(shù)。
在EXT中使用Ext.extend()函數(shù)實(shí)現(xiàn)繼承功能的方法:
var subClass = function(){
subClass.superclass.costructor.call(this);
};
Ext.extend(subClass, BaseClass,{
newMethod: function(){
//...
},
overridenMethod : function(){
//....
}
});
在Ext.extend()函數(shù)通過(guò) subClass.superclass.costructor.call(this);就可以直接調(diào)用父類(lèi)的構(gòu)造函數(shù)。這個(gè)函數(shù)的第一個(gè)參數(shù)總是this, 以確保父類(lèi)的構(gòu)造函數(shù)在子類(lèi)的作用域里工作。
如果父類(lèi)的構(gòu)造函數(shù)需要傳入?yún)?shù),我們也就可以將所需要的參數(shù)直接傳給它,如:
subClass.superclass.costructor.call(this, config);
這樣我們就得到了一個(gè)繼承了父類(lèi)的所有屬性和函數(shù)的子類(lèi)。
傳統(tǒng)的js實(shí)現(xiàn)繼承操作為:
一:定義一個(gè)父類(lèi)
復(fù)制代碼 代碼如下:
var BaseClass = function(){
//.....
};
BaseClass.prototype.someMethod = function(){
//.....
};
BaseClass.prototype.overridenMethod = function(){
//....
}
為BaseClass定義兩個(gè)函數(shù)someMethod 和overridenMethod ,,然后定義一個(gè)subClass子類(lèi),可以直接從BaseClass中繼承所有的屬性和函數(shù),
復(fù)制代碼 代碼如下:
var subClass = function(){
BaseClass.call(this);
};
subClass.prototype = new BaseClass();
subClass.prototype.newMethod = function(){
//...
};
subClass.prototype.overridenMethod = function(){
//...
}
在上面的代碼中,subClass的構(gòu)造函數(shù)首先調(diào)用BaseClass的構(gòu)造函數(shù)初始化數(shù)據(jù),然后通過(guò)subClass.prototype = new BaseClass();這條語(yǔ)句讓subClass類(lèi)獲得BaseClass中的所有屬性和函數(shù)。這樣就實(shí)現(xiàn)了繼承。在此之后我們就可以操作subClass的prototype,為子類(lèi)添加新的函數(shù)或者覆寫(xiě)父類(lèi)的同名函數(shù)。
在EXT中使用Ext.extend()函數(shù)實(shí)現(xiàn)繼承功能的方法:
復(fù)制代碼 代碼如下:
var subClass = function(){
subClass.superclass.costructor.call(this);
};
Ext.extend(subClass, BaseClass,{
newMethod: function(){
//...
},
overridenMethod : function(){
//....
}
});
在Ext.extend()函數(shù)通過(guò) subClass.superclass.costructor.call(this);就可以直接調(diào)用父類(lèi)的構(gòu)造函數(shù)。這個(gè)函數(shù)的第一個(gè)參數(shù)總是this, 以確保父類(lèi)的構(gòu)造函數(shù)在子類(lèi)的作用域里工作。
如果父類(lèi)的構(gòu)造函數(shù)需要傳入?yún)?shù),我們也就可以將所需要的參數(shù)直接傳給它,如:
subClass.superclass.costructor.call(this, config);
這樣我們就得到了一個(gè)繼承了父類(lèi)的所有屬性和函數(shù)的子類(lèi)。
相關(guān)文章
extjs 學(xué)習(xí)筆記(三) 最基本的grid
extjs的一個(gè)亮點(diǎn)就是提供了豐富的UI,使得沒(méi)有藝術(shù)細(xì)胞的程序員也能做出絢麗的界面。把所有的UI集中到一起,有好處也有壞處,好處是有了統(tǒng)一的風(fēng)格和接口,壞處是js文件過(guò)于龐大,使用extjs的最小集合也超過(guò)了500k,所以在有些項(xiàng)目中并不適用。2009-10-10Ext JS Grid在IE6 下寬度的問(wèn)題解決方法
Grid設(shè)置為autoWidth:true時(shí)在ie6下寬度為10000px2009-02-02解決Extjs 4 Panel作為Window組件的子組件時(shí)出現(xiàn)雙重邊框問(wèn)題
Extjs的Panel和Window等組件在默認(rèn)情況下是帶邊框的,通常情況下,單獨(dú)使用沒(méi)有什么關(guān)系,但是將Panel作為Window組件的子組件時(shí)就會(huì)出現(xiàn)雙重邊框的現(xiàn)象于是想辦法將兩重邊框去掉,變成單邊框,感興趣的朋友可以了解下2013-01-01Ext JS 4實(shí)現(xiàn)帶week(星期)的日期選擇控件(實(shí)戰(zhàn)二)
Javascript 有提供Date 對(duì)象用于處理時(shí)間。但是Date 并沒(méi)有提供獲取星期的方法,jquery 的擴(kuò)展組件 等有直接提供這樣的一些現(xiàn)成包,感興趣的朋友可以了解下2013-08-08extjs 分頁(yè)使用jsp傳遞數(shù)據(jù)示例
extjs實(shí)現(xiàn)的分頁(yè),使用jsp傳遞數(shù)據(jù),具體實(shí)現(xiàn)過(guò)程如下,需要的朋友莫錯(cuò)過(guò)2014-07-07