У меня есть простой пример из MDN.
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(this.name + ' makes a noise.');
}
}
class Dog extends Animal {
constructor(name) {
super(name); // call the super class constructor and pass in the name parameter
}
speak() {
console.log(this.name + ' barks.');
}
}
let d = new Dog('Mitzie');
d.speak(); // Mitzie barks.
Теперь в подклассе Dog
как this.name
работает под капотом.Поскольку this
относится к Dog
экземпляру класса, а имя не является чем-то, что существует в экземпляре Dog.Таким образом, для доступа к этому мы используем супер вызов, который вызывает конструктор родителя.Я понял, что это выглядит.
Но кто-то может объяснить, пожалуйста, через механизм прототипа (мне удобно понимать механизм поиска прототипа и цепочки).
Я уверен, что в глубине душибудет сводиться к этому, но не ясно, о промежуточных шагах между ними.Спасибо!