В приведенном ниже коде я думаю, что цепочка прототипов работает (в основном) так, что если дочерний объект (в данном случае mike) не имеет самого метода, он ищет цепочку прототипов через __proto__ Чтобы увидеть, есть ли у родительского объекта его в своем объекте-прототипе, и если это так, то у 'mike' должен быть доступ к нему. Правильно?
Если это так, то почему "прощание" недоступно для Майка? Очевидно, я вижу, что это «это». (или его отсутствие), что имеет значение, но если __proto__ позволяет дочернему объекту получать доступ к методам в объектах-прототипах родителей, почему мы должны беспокоиться об этом. вообще ??
Спасибо большое!
function PersonConstructor() {
this.greet = function sayHello() {
console.log("hello");
};
farewell = function sayBye() {
console.log("Bye");
};
}
function personFromConstructor(name, age) {
const person = new PersonConstructor();
person.name = name;
person.age = age;
return person;
}
const mike = personFromConstructor("Mike", 30);
console.log(mike.greet); // [Function: sayHello]
console.log(mike.farewell); // undefined