让我们有2个构造函数
bird= function(name){
this.cry=function(){ alert('cry'); }
this.name=name;
}
duck= function(){
this.cry=function(){ alert('cry cry'); }
}
b= new bird('Ivan');
d= duck.call(b);
并考虑原型继承
bird= function(name){
this.cry=function(){ alert('cry'); }
this.name=name;
}
duck= function(){
this.cry=function{ alert('cry cry'); }
}
duck.prototype= new bird('Ivan');
当原型继承比杂质方式更好以及杂质比原型继承更好时,你能得到一个例子。
答案 0 :(得分:1)
您不应该创建Parent的实例来设置继承的原型部分(使用Child.prototype = Object.create(Parent.prototype); Child.prototype.constructor = Child)。
构造函数应该以Capital(大写字母)开头。
你可以通过在构造函数(第一个例子)函数和Child do Parent.apply(this,arguments);
中填充所有内容来继承,但是Child将无法扩展Parent函数,并且它将需要更多的cpu和内存来创建Child和家长。
第二个示例使用原型的方式是错误的,您将共享行为设置为Duck原型(名称成员)上的实例成员(cry函数)和实例特定成员。至于使用原型(如果正确完成)优于您提供的第一个示例:
有关构造函数和原型的更多详细信息,请参见here。