是否有可能得到Dog
和Cat
從Animal
繼承(不使用class
或extends
關鍵字),而無需編輯已經被編寫的代碼,並而內保持所有的新代碼當前的構造函數功能?DRY JavaScript的繼承順序是從在一個構造函數
function Animal() {
this.sleep = function() {
var hoursSleepPerNight = this.hoursSleepPerNight;
console.log("z".repeat(hoursSleepPerNight));
}
}
function Dog() {
this.hoursSleepPerNight = 8;
}
function Cat() {
this.hoursSleepPerNight = 7;
}
var dog = new Dog();
dog.sleep();
// "zzzzzzzz"
'Dog.prototype = Object.create(Animal.prototype)',但請注意'sleep'是一個屬性,它不會被繼承。你可以試試'Dog.prototype = new Animal()',但要注意副作用。 – elclanrs
你爲什麼要這麼做? – Bergi
@Bergi,一廂情願的想法,JavaScript可以被迫像Python/Ruby我想的行爲。 – Trajanson