1.
function MyConstructor() {}
var myobject = new MyConstructor();
MyConstructor.prototype = {protest:"maizere"};
[ myobject instanceof MyConstructor, // false !
myobject.constructor == MyConstructor, // true !
myobject instanceof Object ] // true
console.log(myobject.protest) //undefined
これは、myobject が MyConstructor プロトタイプからプロパティとメソッドを継承していないことを証明しています。
ただし、以下の次のコードを参照してください。
2.
function MyConstructor() {}
var myobject = new MyConstructor();
MyConstructor.prototype.protest= "Maizere";//Do this line gets hoisted?or something else
[ myobject instanceof MyConstructor, // true!
myobject.constructor == MyConstructor, // true !
myobject instanceof Object ] // true
console.log(myobject.protest) //Maizere
なぜこれが起こっているのですか?内部プロトタイプの正確な定義は何ですか?これは、オブジェクトのインスタンス化の後でも、protoが MyConstructor プロトタイプを参照していることを証明しています。2 番目のコードでオブジェクトをインスタンス化した後にプロパティが追加され、オブジェクトの内部プロトタイプがそれを受け取るため、後でプロトタイプ プロパティを変更しても、インスタンスで効果を確認できます。ただし、同じ定義は機能しません。最初のコードでプロトタイプ プロパティが置き換えられるのはいつですか?