أين سيحدث التعديل؟
لدينا الكائن rabbit يرث من الكائن animal.
لو استدعينا rabbit.eat() فأيّ الكائنين ستُعدل به الخاصية full، الكائن animal أم الكائن rabbit؟
let animal = {
eat() {
this.full = true;
}
};
let rabbit = {
__proto__: animal
};
rabbit.eat();
الإجابة هي: الكائن rabbit.
لأنّ قيمة this هي الكائن قبل النقطة، بذلك يُعدّل rabbit.eat().
عملية البحث عن الخاصيات تختلف تمامًا عن عملية تنفيذ تلك الخاصيات.
نجد التابِع rabbit.eat سيُستدعى أولًا من كائن النموذج الأولي، وبعدها نُنفّذه على أنّ this=rabbit.