Куда будет произведена запись?
важность: 5
Объект rabbit наследует от объекта animal.
Какой объект получит свойство full при вызове rabbit.eat(): animal или rabbit?
let animal = {
eat() {
this.full = true;
}
};
let rabbit = {
__proto__: animal
};
rabbit.eat();
Ответ: rabbit.
Поскольку this – это объект, который стоит перед точкой, rabbit.eat() изменяет объект rabbit.
Поиск свойства и исполнение кода – два разных процесса.
Сначала осуществляется поиск метода rabbit.eat в прототипе, а затем этот метод выполняется с this=rabbit.