下面是一個簡單的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