使用object.create定义的原型的构造函数属性来自哪里?

时间:2013-02-14 20:20:57

标签: javascript prototype

function myObj(){
    myOtherObj.call(this);
}

myObj.prototype = object.create(myOtherObj.prototype);

myObj.prototype是否包含指向myObj函数的构造函数?如果是这样的话?

1 个答案:

答案 0 :(得分:1)

  

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}
});