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