Dove andrà a scrivere?
importanza: 5
Abbiamo un oggetto rabbit
che eredita da animal
.
Se invochiamo rabbit.eat()
, quale oggetto riceverà la proprietà full
: animal
o rabbit
?
let animal = { eat() { this.full = true; } }; let rabbit = { __proto__: animal }; rabbit.eat();
La risposta: rabbit
.
Questo perché this
fa riferimento all’oggetto prima del punto, quindi rabbit.eat()
modifica rabbit
.
La ricerca della proprietà e la sua esecuzione sono cose differenti.
Il metodo rabbit.eat
viene prima cercato nel prototype, e successivamente eseguito con this=rabbit
.