1
function myObj(){
myOtherObj.call(this);
}
myObj.prototype = object.create(myOtherObj.prototype);
myObj.prototype是否包含指向myObj函數的構造函數?如果是的話如何?其中object.create定義的原型的構造函數屬性來自哪裏?
function myObj(){
myOtherObj.call(this);
}
myObj.prototype = object.create(myOtherObj.prototype);
myObj.prototype是否包含指向myObj函數的構造函數?如果是的話如何?其中object.create定義的原型的構造函數屬性來自哪裏?
myObj.prototype是否包含指向myObj函數的構造函數?如果是的話如何?
號Object.create
將只是創建一個空的對象從給定對象繼承。在你的情況下,這是myOtherObj.prototype
,並且可能有一個「構造函數」屬性,現在繼承(myObj.prototype.constructor
=== myOtherObj.prototype.constructor
=== myOtherObj
)。
這是not necessary,但如果你要調整的屬性,以便(new myObj).constructor
=== myObj.prototype.constructor
=== myObj
你可以做,通過傳遞的第二個參數Object.create
:
myObj.prototype = Object.create(myOtherObj.prototype, {
constructor: {value:myObj, writable:true, enumerable:false, configurable:true}
});
從「沒必要」鏈接,我認爲'instanceof'運算符通過原型鏈查看構造函數屬性,是不是這種情況?如果是這樣的話,我會有一段很糟糕的誤解。 – 0xor1 2013-02-15 08:14:38
不,['a instanceof B'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/instanceof)遍歷'a'的原型鏈,直到找到'B.原型'在裏面。原型鏈中對象的'constructor'屬性與此無關。 – Bergi 2013-02-15 13:09:07