Куда будет произведена запись?
важность: 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
.