在定义了一些构造函数之后,例如Child
,我已经看到了以下两种形式:
Child.prototype = Parent.prototype;
或者
Child.prototype = new Parent();
两者都正确吗?如果是这样,是否有理由更喜欢其中一个?
在定义了一些构造函数之后,例如Child
,我已经看到了以下两种形式:
Child.prototype = Parent.prototype;
或者
Child.prototype = new Parent();
两者都正确吗?如果是这样,是否有理由更喜欢其中一个?
尽管@elclanrs 的评论是正确的,而且这些天您可能更喜欢 Object.create,并选择为较旧的环境填充它,但您的问题有一个明确的正确答案。
Child.prototype = new Parent();
远远优于
Child.prototype = Parent.prototype;
出于简单的原因,在后者中,您随后添加到子原型的任何属性也包含在父原型中。什么时候
Dog.prototype = Animal.prototype;
dog.prototype.bark = function() {console.log("woof, woof");}
Cat.prototype = Animal.prototype;
var frisky = new Cat();
frisky.bark(); //=> woof, woof!
你有猫和狗住在一起......集体歇斯底里。