کلمهٔ کلیدی This در جاوا اسکریپت

از ویکی کد
پرش به ناوبری پرش به جستجو
Main Page Tutorial
JavaScript-menu.png
موارد آموزشی
فرم‌ها در جاوا اسکریپت
اشیاء در جاوا اسکریپت
تابع در جاوا اسکریپت
HTML DOM در جاوا اسکریپت
Browser BOM در جاوا اسکریپت
AJAX در جاوا اسکریپت
JSON در جاوا اسکریپت
جی‌کوئری در برابر جاوا اسکریپت
مثال‌های جاوا اسکریپت
مرجع جاوا اسکریپت

مثال

1 var 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 است.

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

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

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

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

مثال

1 var x = this;

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

مثال

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

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

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

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

مثال

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

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

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

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

مثال

1 "use strict";
2 function 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، شیء “صاحب” تابع است):

مثال

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

مثال

1 var 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 است:

مثال

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

منابع آموزشی