、新しく作成された基本クラスのインスタンス(B.prototype =新しいA)に由来するのほぼ普遍的な間違いがあります。最低でも基本クラスのコンストラクタは不要なコードを実行し、最悪の場合、派生のために人工的に作成する必要のない入力引数がなくてもクラッシュする可能性があります。さらに、基本クラスインスタンスのインスタンス関数は、純粋な運のみによって適切な派生クラスプロトタイプの一部になります。
クリアしてください!基本クラスのコンストラクタ(B.prototype = new A)によって作成された基本クラスのインスタンスを継承した場合、基本クラスから直接継承することはありません!!継承チェーン、つまり基本クラスインスタンスに仲介を作成しました!うん!!これは、継承チェーン内の継承されたプロパティ値を探す際に余分な深さがあるため、非効率的です。この深さは、この間違いを犯すたびに累積されます。
だから正しい方法です。 B.prototype = new Aの代わりに、 B.prototype = Object.create(A.prototype)を記述する必要があります。 09年には利用できなかったかもしれませんが、09年にはまだObject.createの代わりに
protoProxy = function(myClass)
{
function foo(){};
foo.prototype = myClass.prototype;
return new foo();
}
がありました。 B.prototype = newの代わりに と書くべきです。B.prototype = protoProxy(A)を09に書いてください。
ありがとうございます。 –
より先に –
お返事ありがとうございます –