Мой вопрос о том, как класс (Teacher
) наследует метод (greeting
) от своего родительского класса (Person
).
class Person {
constructor(name) {
this.name = name
}
greeting() {
console.log(`Hi! I'm ${this.name}`);
};
}
class Teacher extends Person {
constructor(first, subject) {
super(first);
this.subject = subject;
}
}
person = new Person;
teacher = new Teacher;
Я использую приведенный выше фрагмент в качестве примера. Копирую в консоль браузера. Я не был уверен, чего ожидать, когда я console.dir(Person)
, но вижу, что это похоже на объект Function
. Поэтому неудивительно, что Person.prototype.__proto__
указывает на Object.prototype
, как и функция.
Я также не был уверен, чего ожидать от console.dir(Teacher)
. Teacher.prototype.__proto__
также указывает на Object.prototype
. Здесь не упоминается приветствие farewell
от Person
, но я знаю, что экземпляр Учителя может его использовать. Как Teacher
/ экземпляр Teacher
имеет доступ к Person.prototype
?
Я знаю, что в типичном прототипном наследовании Function.prototype
имеет __proto__
, который указывает на Object.prototype
.
Я также считаю, что классы - это синтаксический сахар по сравнению с прототипным наследованием (что, как мне кажется, означает тот же процесс, но сокращенный синтаксис).
Вот полезная фотография того, что я вижу, когда вижу Учителя