Dimanakah akan tertulis?
Kita memiliki rabbit
mewarisi dari animal
.
Jika kita memanggil rabbit.eat()
, yang mana objeknya menerima properti full
: animal
atau rabbit
?
let animal = {
eat() {
this.full = true;
}
};
let rabbit = {
__proto__: animal
};
rabbit.eat();
Jawabannya: rabbit
.
Karena this
adalah sebuah objek sebelum titik, jadi rabbit.eat()
memodifikasi rabbit
.
Pencarian properti dan eksekusi adalah dua hal yang berbeda.
The method rabbit.eat
is first found in the prototype, then executed with this=rabbit
.
Metode rabbit.eat
adalah yang pertama ditemukan dalam prototype, lalu dieksekusi dengan this=rabbit
.