کجا مینویسد؟
اهمیت: 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
اجرا شد.