واژه‌کلیدی this در JavaScript

مثال


  
  lastName : \
  id       : 678 ,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

آزمایش کنید

this چیست؟

JavaScript این کلید اشاره دارد به object متعلق به آن.

این دارای ارزش‌های مختلفی دارد که بستگی به مکان استفاده دارد:

  • در method،این به object owner اشاره دارد.
  • در حالت单独،این به object global اشاره دارد.
  • در تابع،این به object global اشاره دارد.
  • در تابع، در حالت strict،این این نامگذاری نشده است.
  • در رویداد،این به element دریافت‌کننده رویداد اشاره دارد.

مانند call() و apply() این method می‌تواند this را به هر object دیگری مرتبط کند.

this در method

در method object،این به owner method اشاره دارد.

در مثال بالای صفحه،این به object person اشاره دارد.

object person مالک method fullName است.

fullName : function() {
  return this.firstName + " " + this.lastName;
}

آزمایش کنید

this单独

در حالت单独 استفاده، owner object است، بنابراین، این به object global اشاره دارد.

در window مرورگر، object global است [object Window]:

مثال

var x = this ;

آزمایش کنید

در حالت strict، اگر به تنهایی استفاده شود، این به object global اشاره دارد [object Window]:

مثال

"use strict" ;
var x = this ;

آزمایش کنید

this در تابع (default)

binding default در تابع JavaScript، این

بنابراین، در تابع،این به object global اشاره دارد [object Window]

مثال

function myFunction() {
  return this ;
}

آزمایش کنید

this در تابع (Strict mode)

Strict mode of JavaScript نمی‌تواند binding default را اجازه دهد.

بنابراین، در استفاده از آن در تابع، در حالت strict،این این نامگذاری نشده است (undefined})

مثال

"use strict" ;
function myFunction() {
  return this ;
}

آزمایش کنید

this در event handler

در event handler HTML،این به element HTML دریافت‌کننده این رویداد اشاره دارد :

مثال

<button onclick="this.style.display='none'">
  برای حذف من کلیک کنید !
</button>

آزمایش کنید

method binding object

در این مثال،این

مثال


  
  lastName   : \
  id         : 678 ,
  myFunction : function() {
    return this ;
  }
};

آزمایش کنید

مثال


  
  lastName : \
  id       : 678 ,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

آزمایش کنید

به عبارت دیگر،this.firstName معنادارد اینمجرد (person) شیء firstName ویژگی‌ها.

پیوندنمایاضاهایفونکشن

call() و apply() روش‌ها روش‌های پیش‌تعریف شده JavaScript هستند.

هر دو می‌توانند برای فراخوانی روش‌های شیء با استفاده از یک شیء دیگر به عنوان پارامتر استفاده شوند.

می‌توانید در بخش‌های بعدی این آموزش در مورد call() و apply() بیشتر.

در مثال زیر، هنگام استفاده از person2 به عنوان پارامتر در فراخوانی person1.fullName،این به person2 ارجاع خواهد داد، حتی اگر آن روش person1 باشد:

مثال

var person1 = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}
var person2 = {
  firstName:"Bill",
  lastName: "Gates",
}
person1.fullName.call(person2);  // بازمی‌گردد به "Bill Gates"

آزمایش کنید