所有ExtJS的文檔和例子我已閱讀建議調用父類的方法是這樣的:更好的方法來調用父類方法ExtJS的
MyApp.MyPanel = Ext.extend(Ext.Panel, {
initComponent: function() {
// do something MyPanel specific here...
MyApp.MyPanel.superclass.initComponent.call(this);
}
});
我一直在使用這種模式相當長的一段時間,主要的問題是,當你重命名你的類時,你也必須改變所有對超類方法的調用。這很不方便,我經常會忘記,然後我必須找出奇怪的錯誤。
但閱讀的Ext.extend()
源,我發現,這不是我可以使用superclass()
或super()
方法是Ext.extend()
增加了原形:
MyApp.MyPanel = Ext.extend(Ext.Panel, {
initComponent: function() {
// do something MyPanel specific here...
this.superclass().initComponent.call(this);
}
});
在這段代碼中重命名MyPanel別的東西很簡單 - 我只是必須改變一條線。
但我懷疑...
我還沒有看到這個記錄任何地方和舊的觀念認爲,我不應該依靠無證行爲。
我沒有在ExtJS源代碼中找到這些
superclass()
和supr()
方法的單個用法。爲什麼在你不使用它們時創建它們?也許這些方法在某些舊版本的ExtJS中使用,但現在不推薦使用?但它似乎是一個非常有用的功能,爲什麼你會棄用它?
那麼,我應該使用這些方法嗎?
其實,你可以試試'this.constructor.superclass.initComponent.call(this);'? – neonski 2009-11-12 21:24:04
謝謝,但這與Jabe描述的問題相同 - 它只適用於一個層次的層次結構。 – 2009-11-13 08:44:53