Это потому, что rabbits[1]
является экземпляром Rabbit
- следовательно, его прототип указывает на Rabbit
, а поскольку Rabbit
является расширением Animal
, Rabbit.prototype
указывает на Animal.prototype
:
class Animal {
constructor(name, speed) {
this.speed = speed;
this.name = name;
}
run(speed = 0) {
this.speed += speed;
console.log(`${this.name} runs with speed ${this.speed}.`);
}
static compare(animalA, animalB) {
console.log(animalA.speed - animalB.speed);
}
}
class Rabbit extends Animal {
hide() {
console.log(`${this.name} hides!`);
}
}
let rabbits = [
new Rabbit("White Rabbit", 5),
new Rabbit("Black Rabbit", 10)
];
console.log(rabbits[1].constructor.name);
console.log(Rabbit.__proto__);