Я пытаюсь понять ООП с помощью JavaScript с помощью очень простых примеров.
Моя цель - создать в качестве примера иерархию классов с животными.
В упрощенной иерархии животных мы можем увидеть что-то вроде этого:
Animal
/\
Mammal Reptile
/\ /\
Human Dog Snake Alligator
Я хочу взять этот пример и создать классы в JavaScript. Вот моя попытка. Что я могу сделать, чтобы сделать его лучше?
function Animal(name) {
this.name = name;
}
function Mammal() {
this.hasHair = true;
this.numEyes = 2;
this.blood = "warm";
}
function Dog(breed) {
this.breed = breed;
this.numLegs = 4;
}
Dog.prototype = new Animal("Fido");
Dog.prototype = new Mammal();
var Fido = new Dog("Lab");
console.log(Fido.name); // returns undefined when i want it to return Fido
console.log(Fido.hasHair); // returns true as expected
console.log(Fido.breed); // returns lab as expected
Что бы я хотел сделать, так это то, что собака расширяет свойства млекопитающих и животных, так как это одновременно, но она работает неправильно. Я предполагаю, потому что я вызываю dog.prototype = new Mammal() после нового Animal(), который перезаписывает соединение.
Как правильно записать эти классы, чтобы я мог вызывать все свойства своих родительских классов?
Спасибо.