注: 書籍からコピー
従来の JS 実装の継承操作は次のとおりです:
1: 親クラスを定義します
var BaseClass = function(){
//....
};
BaseClass.prototype.someMethod = function( ){
//....
};
BaseClass.prototype.overridenMethod = function(){
//....
}
BaseClass の 2 つの関数 someMethod と overridenMethod を定義し、BaseClass からすべてのプロパティと関数を直接継承できる subClass サブクラスを定義します。
var subClass = function(){
BaseClass.call(this);
};
subClass.prototype = new BaseClass( );
subClass.prototype.newMethod = function(){
//...
};
subClass.prototype.overridenMethod = function(){
//.. 🎜>}
上記のコードでは、subClass のコンストラクターはまず BaseClass のコンストラクターを呼び出してデータを初期化し、次にステートメント subClass.prototype = new BaseClass(); を使用して subClass を作成します。 class BaseClass のすべてのプロパティと関数を取得します。このようにして継承が実現されます。この後、サブクラスのプロトタイプを操作したり、サブクラスに新しい関数を追加したり、親クラスの同名の関数をオーバーライドしたりできます。
EXT で Ext.extend() 関数を使用して継承関数を実装する方法:
var subClass = function(){
subClass.superclass.costructor.call(this);
Ext.extend(subClass, BaseClass, {
newMethod: function(){
//...
},
overridenMethod : function(){
//....
}
}) ;
Ext.extend() 関数では、subClass.superclass.costructor.call(this); を通じて親クラスのコンストラクターを直接呼び出すことができます。親クラスのコンストラクターが子クラスのスコープ内で動作することを保証するために、この関数の最初のパラメーターは常に this です。
親クラスのコンストラクターがパラメーターを渡す必要がある場合は、次のように必要なパラメーターをコンストラクターに直接渡すことができます。
subClass.superclass.costructor.call(this, config);
この方法親クラスのすべてのプロパティと関数を継承するサブクラスを取得します。