下面是一个简单的JavaScript继承例子。我们可以替换这一行:Dog.prototype = new Animal();
与Dog.prototype = Animal.prototype?JavaScript原型继承
我已经在浏览器中测试过了,他们给了我相同的结果。我很奇怪为什么我们需要创建一个新的Animal对象并将它分配给Dog.prototype。与call
function Dog(color, age) {
this.color = color;
Animal.call(this, age); // This line
}
在这里,你打电话动物的构造提供它this
从而手动建立动物的上下文:
function Animal(age){
this.age = age;
}
Animal.prototype.walk = function(){
console.log("Walk");
}
function Dog(color, age){
this.color = color;
Animal.call(this, age)
}
Dog.prototype = new Animal(); //Why not Dog.prototype = Animal.prototype
Dog.prototype.constructor = Dog;
dog_b = new Dog("yellow", 9);
console.log("Age: " + dog_b.age + " Color: " + dog_b.color);
dog_b.walk()
“*我很奇怪为什么我们需要创建一个新的动物对象*” - 良好的直觉。你[不应该在那里使用'new Animal'](https://stackoverflow.com/questions/12592913/what-is-the-reason-to-use-the-new-keyword-here)。 – Bergi