This در جاوا اسکریپت
مفهوم this در جاوا اسکریپت
کلمه کلیدی this یکی از مباحث چالشبرانگیز و در عین حال قدرتمند در زبان جاوا اسکریپت است. این مفهوم به شیء جاری اشاره دارد که تابع در آن زمینه (context) اجرا میشود. درک صحیح this برای توسعهدهندگان حرفهای ضروری است.
مقدار this همیشه به شیءای اشاره میکند که تابع را فراخوانی کرده است، نه جایی که تابع تعریف شده است.
انواع رفتار this در موقعیتهای مختلف
موقعیت | مقدار this |
---|---|
تابع عادی | شیء window (در حالت غیر strict) |
متد شیء | خود شیء |
تابع سازنده | نمونه جدید ایجاد شده |
رویدادها | عنصر دریافتکننده رویداد |
مثالهای کاربردی
در اینجا چند نمونه از رفتار this را مشاهده میکنیم:
-
در متد شیء:
const person = {
name: 'علی',
greet() { console.log(this.name); }
};
person.greet(); // خروجی: علی -
در تابع عادی:
function test() { console.log(this); }
test(); // در حالت غیر strict: window
کنترل مقدار this
میتوانیم مقدار this را به صورت دستی با متدهای زیر کنترل کنیم:
- call(): فراخوانی تابع با مقدار this و آرگومانهای مشخص
- apply(): مشابه call اما آرگومانها به صورت آرایه دریافت میشوند
- bind(): ایجاد تابع جدید با مقدار this ثابت
برای مطالعه عمیقتر میتوانید به آموزش جامع This در جاوا اسکریپت مراجعه نمایید.
نکات کلیدی
1. در arrow functionها، this از محیط بیرونی به ارث میرسد و قابل تغییر نیست.
2. در حالت strict mode، this در توابع عادی undefined میشود.
3. مقدار this در زمان فراخوانی تابع تعیین میشود، نه در زمان تعریف.