- Ext提供了這樣的一個實用函數 Ext.extend (API 參考) 在EXT框架中實現類繼承的機制。這賦予了你擴展任何JavaScript基類的能力,而無須對類自身進行代碼的修改(這裏通常指的是子類,或是從它繼承的,一個基類)擴展Ext組件這是個較理想的方法。
- 要從一個現有的類創建出一個新類,首先要通過一個函數聲明新類的構造器,然後調用新類屬性所共享的擴展方法。這些共享的屬性通常是方法,但是如果要在實例之間共享數據(例如,Java中的靜態類變量),應該也一同聲明。
- JavsScript並沒有提供一個自動的調用父類構造器的機制,所以你必須通過屬性superclass在你的構造器中顯式調用父類。第一個參數總是this,以保證構造器工作在調用函數的作用域。
- MyNewClass = function(arg1, arg2, etc) {
- // 顯式調用父類的構造函數
- MyNewClass.superclass.constructor.call(this, arg1, arg2, etc);
- };
- 06.
- Ext.extend(MyNewClass, SomeBaseClass, {
- 07.
- theDocument: Ext.get(document),
- 08.
- myNewFn1: function() {
- 09.
- // etc.
- 10.
- },
- 11.
- myNewFn2: function() {
- 12.
- // etc.
- 13.
- }
- 14.
- });
- 下面的一個例子是Ext的實際案例,用於可縮放,拖動元素,X、Y的座標值指定了對象可在垂直、水平方向拖動的距離。// 創建新類的構造函數
- view sourceprint?
- 01.
- Ext.ResizableConstrained = function(el, config){
- 02.
- Ext.ResizableConstrained.superclass.constructor.call(this, el, config);
- 03.
- };
- 04.
- 05.
- // 擴展基類
- 06.
- Ext.extend(Ext.ResizableConstrained, Ext.Resizable, {
- 07.
- setXConstraint : function(left, right){
- 08.
- // 得到父類的屬性dd和setXConstraint的引用
- 09.
- this.dd.setXConstraint(left, right);
- 10.
- },
- 11.
- 12.
- setYConstraint : function(up, down){
- 13.
- // 得到父類的屬性dd和setYConstraint的引用
- 14.
- this.dd.setYConstraint(up, down);
- 15.
- }
- 16.
- });
- 17.
- 18.
- // 創建新類的實例
- 19.
- var myResizable = new Ext.ResizableConstrained('resize-el', {
- 20.
- width: 200,
- 21.
- height: 75,
- 22.
- minWidth:100,
- 23.
- minHeight:50,
- 24.
- maxHeight:150,
- 25.
- draggable:true
- 26.
- });
- 27.
- 28.
- //調用新方法
- 29.
- myResizable.setYConstraint(0,300);
- 30.
- myResizable.setXConstraint(0,300);
- 按照直白語言,你可以把上面的代碼理解成爲:”Ext.ResizableConstrained 擴展了Ext.Resizable並實現了這些方法"。