کلیدواژه this به شیء فعلی در تابع در حال جریان اشاره میکند.
به شیء فعلی اشاره میکند.
شیء فعلی در مثال بالا Car است و this.color به رنگ ماشین اشاره دارد.
در متد display نیز object مورد نظر Car است.هر چند این تابع خارج از object تعریف شده است اما چون
تابع متعلق به Car است ، کلیدواژه this نیز به آن اشاره دارد.
در این صورت به شیء سراسری که Window است اشاره میکند.
توجه : اگر حالت strict mode فعال باشد ، خروجی متفاوت است.
هنگامی که از کلیدواژه new استفاده می شود ، یک object جدید و خالی ایجاد می شود.
با ایجاد شی a و صدا زدن متد function یک شی خالی ایجاد می شود و کلید واژه this به این شی جدید اشاره میکند.
این جا this در یک Call back function استفاده شده است . در نتیجه به شی Window اشاره میکند. به همین دلیل خروجی undefined است.برای رفع این مشکل چندین راه حل وجود دارد .
راه حل اول : میتوان با پاس دادن شی مورد نظر (Movie) به شکل زیر خروجی مورد نظر را دریافت کرد.
راه حل دوم : میتوان با ساخت یک متغیر جدید در متد ShowActors و انتساب دادن شی Movie به آن ، این مشکل را رفع کرد.
به کلاس فعلی اشاره میکند.
رفتار arrow function ها مقداری متفاوت است.در این نوع توابع،this به شی فعلی اشاره نمیکند. بلکه به شی سراسری اشاره میکند.(Window)به همین دلیل استفاده از کلیدواژه this در arrow function ها توصیه نمیشه.