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