ما قصد داریم این پروژهٔ متن‌باز را در دسترس همهٔ مردم در سرتاسر دنیا قرار دهیم.

به ترجمهٔ محتوای این آموزش به زبان خودتان کمک کنید/a>.

بازگشت به درس

تفاوت بین فراخوانی‌ها

اهمیت: 5

بیایید یک شیء rabbit جدید ایجاد کنیم:

function Rabbit(name) {
  this.name = name;
}
Rabbit.prototype.sayHi = function() {
  alert(this.name);
};

let rabbit = new Rabbit("خرگوش");

این فراخوانی‌ها همین کار را می‌کنند یا نه؟

rabbit.sayHi();
Rabbit.prototype.sayHi();
Object.getPrototypeOf(rabbit).sayHi();
rabbit.__proto__.sayHi();

اولین فراخوانی this == rabbit دارد، سایر فراخوانی‌ها this برابر با Rabbit.prototype دارند، زیرا در واقع شیء قبل از نقطه است.

بنابراین فقط اولین تماس خرگوش را نشان می‌دهد، سایر تماس‌ها undefined را نشان می‌دهند:

function Rabbit(name) {
  this.name = name;
}
Rabbit.prototype.sayHi = function() {
  alert( this.name );
}

let rabbit = new Rabbit("خرگوش");

rabbit.sayHi();                        // خرگوش
Rabbit.prototype.sayHi();              // undefined
Object.getPrototypeOf(rabbit).sayHi(); // undefined
rabbit.__proto__.sayHi();              // undefined
Morty Proxy This is a proxified and sanitized view of the page, visit original site.