私が読んだすべての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の名前を別の名前に変更するのは簡単です。1行を変更するだけです。
しかし、私には疑問があります...
私はこれがどこにも文書化されているのを見たことがなく、古い知恵は、文書化されていない行動に頼るべきではないと言っています。
ExtJSソースコードでこれら
superclass()
とメソッドの単一の使用法を見つけられませんでした。supr()
使用しないのになぜ作成するのですか?たぶん、これらのメソッドはExtJSの古いバージョンで使用されていましたが、現在は非推奨になっていますか?しかし、それはとても便利な機能のようです、なぜあなたはそれを非推奨にするのですか?
それで、私はこれらの方法を使うべきかどうか?