2
プロトタイプについての私の読書から、コンストラクタ関数のプロトタイプへの変更は、そのコンストラクタ関数を使用して作成されたすべてのオブジェクトに反映されるという印象を受けました。javacriptのプロトタイプ割り当ての順序
var Class1 = function(){
this.prop1 = 'value1';
};
Class1.prototype.prop2 = 'value2';
var Class2 = function(){
this.prop3 = 'value3';
};
//Class2.prototype = new Class1(); //1*
var obj1 = new Class2();
Class2.prototype = new Class1(); //2*
console.log('1 ' + obj1.prop1); // undefined
console.log('2 ' + obj1.prop2); // undefined
console.log('3 ' + obj1.prop3); // value3
あなたが見ることができるように、私はobj1が構築された後、私はクラス2にClass1のプロトタイプを割り当てたため、その後、PROP1とPROP2の値が「未定義」戻ってきている。
は、このコードを検討してください。
1 *のコメントを外して2 *をコメントアウトすると、結果は期待どおりです。
私はここ数日間、プロトタイプについてかなりの読書をしましたが、誰もその注文が重要であるとは言いませんでした。
これについてはもちろんありません。私は.NETのバックグラウンドから来ており、これまでにたくさんの前提が破壊されました。新しく作成されたObjectが作成され、 'new'キーワードが使用された時点でプロトタイプがバインドされていることを説明します。私はこれを知っているので、オブジェクトが作成された後のプロトタイプの内容を変更することは、前記オブジェクトによって無視されると容易に想定することができます。これはそうではありません。私が知る限り、プロトタイプは、いつでも古いオブジェクトを指すことができるリファレンスです。これはそうではないようです。それを説明するサイトの提案はありますか? – Jules