بازگشت به درس

کجا می‌نویسد؟

اهمیت: 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 اجرا شد.