کلمهٔ کلیدی This

از ویکی‌کد، دانشنامهٔ برنامه‌نویسی
پرش به ناوبری پرش به جستجو


مثال

1var person = {
2  firstName: "John",
3  lastName : "Doe",
4  id       : 5566,
5  fullName : function() {
6    return this.firstName + " " + this.lastName;
7  }
8};


مشاهدهٔ نتیجه


کلمه this چیست؟

کلمه کلیدی this در جاوا اسکریپت به شیء ای که در آن قرار داد، اشاره می‌کند. [۱]

کلمه کلیدی this معانی مختلفی را با توجه به جایی که ازآن استفاده می‌شود، دارد:

در یک متد، کلمه کلیدی this، به شیء صاحب متد اشاره دارد.


کلمه this به تنهایی، به شیء کلی (global object) اشاره دارد.


در یک تابع، کلمه کلیدی this به شیء کلی (global object) اشاره دارد.


کلمه کلیدی this در حالت سخت‌گیرانه در یک تابع مقدار معنی undefined دارد.


در یک رویداد کلمه کلیدی this ، به عنصری که رویداد روی آن اتفاق افتاده‌است اشاره دارد.


متدهایی همچون Call() و apply() می‌توانند کلمه this را به هر شیءای ربط دهند.

کلمه کلیدی this در متد

در یک متد در شیء، کلمه کلیدی this به شیء “صاحبمتد اشاره دارد.

درمثالی که در ابتدای این صفحه وجود دارد، کلمه کلیدی this به شیء person اشاره دارد.

شیء person صاحب متد fullName است.

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


مشاهدهٔ نتیجه


کلمه this به تنهایی

زمانی که از کلمه this به تنهایی استفاده می‌کنید، owner (به فارسی: صاحب) شیء کلی است، بنابراین کلمه this به شیء کلی (global) اشاره دارد.

در پنجره مرورگر شیء کلی یا global برابر با [object Window]:

مثال

var x = this;


مشاهدهٔ نتیجه


در حالت سخت‌گیرانه نیز، زمانی که از کلمه this به تنهایی استفاده می‌کنید، this به شیء کلی یا Global یعنی [object Window] اشاره دارد.

مثال

1"use strict";
2var x = this;


مشاهدهٔ نتیجه


کلمه this در یک تابع (به صورت پیش فرض)

در یک تابع جاوا اسکریپت، کلمه this به صاحب تابع اشاره دارد.

بنابراین، در یک تابع، کلمه کلیدی this به شیء کلی یا global یعنی [object Window] اشاره دارد.

مثال

1function myFunction() {
2  return this;
3}


مشاهدهٔ نتیجه


کلمه this در یک تابع (حالت سخت گیرانه (Strict))

در حالت سخت‌گیرانه کلمه this جاوا اسکریپت، همانند وضعیت پیشفرض آن عمل نمی‌کند.

بنابراین زمانی که از این کلمه در حالت سخت‌گیرانه استفاده کنید، کلمه کلیدی this به undefined اشاره دارد.

مثال

1"use strict";
2function myFunction() {
3  return this;
4}


مشاهدهٔ نتیجه


کلمه کلیدی this در مدیریت کننده رویدادها (Event Handlers)

در ویژگی کنترل‌کننده رویداد در HTML ، کلمه کلیدی this به عنصری از HTML اشاره دارد که رویداد را دریافت می‌کند (روی آن کنترل رویدادی اتفاق می‌افتد):

مثال

1<button onclick="this.style.display='none'">
2  Click to Remove Me!
3</button>


مشاهدهٔ نتیجه


اشاره به شیء متد

در این مثال‌ها، کلمه کلیدی this به شیء person اشاره دارد. (شیء person، شیء “صاحب” تابع است):

مثال

1var person = {
2  firstName  : "John",
3  lastName   : "Doe",
4  id         : 5566,
5  myFunction : function() {
6    return this;
7  }
8};


مشاهدهٔ نتیجه


مثال

1var person = {
2  firstName: "John",
3  lastName : "Doe",
4  id       : 5566,
5  fullName : function() {
6    return this.firstName + " " + this.lastName;
7  }
8};


مشاهدهٔ نتیجه


به تعبیری دیگر: this.firstname به معنای ویژگی این (شیء person) است.

اشاره به تابع بصورت Explicit

متدهای call() و Apply() متدهای از پیش تعریف شده جاوا اسکریپت هستند.

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

شما بعدا در مورد متدهای call() و Apply() مطالب بیشتری را در این آموزش خواهید آموخت.

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

مثال

 1var person1 = {
 2  fullName: function() {
 3    return this.firstName + " " + this.lastName;
 4  }
 5}
 6var person2 = {
 7  firstName:"John",
 8  lastName: "Doe",
 9}
10person1.fullName.call(person2);  // Will return "John Doe"


مشاهدهٔ نتیجه


منابع آموزشی