Де буде записано?
важливість: 5
Ми маємо об’єкт rabbit
, котрий успадковує властивості від об’єкта animal
.
Якщо ми викличемо rabbit.eat()
, у який з об’єктів буде записана властивість full
: в animal
чи rabbit
?
let animal = {
eat() {
this.full = true;
}
};
let rabbit = {
__proto__: animal
};
rabbit.eat();
Відповідь: rabbit
.
Це тому, що ключове слово this
вказує на об’єкт перед крапкою, отже rabbit.eat()
буде записано в rabbit
.
Пошук метода та його виконання – це дві різні речі.
Метод rabbit.eat
спочатку шукається в прототипі, а потім виконується з умовою this=rabbit
.