Javascript Child.prototype=Parent.prototype vs Child.prototype=new Parent()
在定义了一些构造函数(例如Child)之后,我看到了以下两种形式:Javascript Child.prototype=Parent.prototype vs Child.prototype=new Parent(),javascript,oop,inheritance,Javascript,Oop,Inheritance,在定义了一些构造函数(例如Child)之后,我看到了以下两种形式: Child.prototype = Parent.prototype; 或 都对吗?如果是这样的话,有没有理由选择一个而不是另一个呢?尽管@elclars的评论是正确的,而且现在你可能更喜欢Object.create,并选择为旧环境填充它,但你的问题有一个明确的正确答案 Child.prototype = new Parent(); 远优于 Child.prototype = Parent.prototype; 原因很简单
Child.prototype = Parent.prototype;
或
都对吗?如果是这样的话,有没有理由选择一个而不是另一个呢?尽管@elclars的评论是正确的,而且现在你可能更喜欢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!
你有猫和狗住在一起。。。集体歇斯底里。尽管@elclars的评论是正确的,而且现在你可能更喜欢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!
你有猫和狗住在一起。。。集体歇斯底里。现在的首选方式:Child.prototype=Object.createParent.prototype在第一个版本中,两个构造函数共享同一个原型。这意味着子对象不能有自己的原型方法。如果你用同样的方法创建孙子原型,它实际上会从父代继承;在Child.Preferred way的开头:Child.prototype=Object.createParent.prototype在第一个版本中,两个构造函数共享同一个原型。这意味着子对象不能有自己的原型方法。如果你用同样的方法创建孙子原型,它实际上会从父代继承;在孩子出生之初。