أين سيحدث التعديل؟
لدينا الكائن 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
.