为什么将构造函数从Mammal重置为Cat很重要?我一直在玩这个代码,并没有发现任何带有“错误”构造函数的负面影响。
function Mammal(name){
this.name=name;
this.offspring=[];
}
Cat.prototype = new Mammal(); // Here's where the inheritance occurs
Cat.prototype.constructor=Cat; // Otherwise instances of Cat would have a constructor of Mammal
function Cat(name){
this.name=name;
}
例如:
function Mammal(name){
this.name=name;
this.offspring=[];
}
Cat.prototype = new Mammal(); // Here's where the inheritance occurs
function Cat(name){
this.name=name;
this.hasFur = true;
}
c1 = new Cat();
alert(c1.hasFur); //returns true;
答案 0 :(得分:7)
从技术上讲,你不需要来做到这一点,但是因为你要替换整个.prototype
对象,所以你丢失了默认设置的.constructor
,所以如果你有依赖它的代码,你需要手动包含它。