کلمه کلیدی this

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

یکی از مفاهیم چالش‌برانگیز و در عین حال قدرتمند در جاوااسکریپت، کلمه کلیدی this است. این کلمه بسته به context اجرای کد، می‌تواند به اشیاء مختلفی اشاره کند و درک صحیح آن برای توسعه‌دهندگان ضروری است.

درک رفتار this مانند داشتن کلید حل معمای scope و context در جاوااسکریپت است.

مقادیر مختلف this در شرایط مختلف

شرایط اجرا مقدار this
در تابع عادی شیء global (window در مرورگر)
در متد شیء خود شیء مالک متد
با استفاده از new نمونه جدید ایجاد شده
در رویدادها عنصر دریافت‌کننده رویداد

مثال‌های کاربردی

برای درک بهتر، به این مثال‌ها توجه کنید:

  1. متد شیء:
    const person = {
      name: "علی",
      greet() { console.log(this.name); }
    };
    person.greet(); // خروجی: "علی"
  2. تابع عادی:
    function test() {
      console.log(this);
    }
    test(); // در مرورگر: window

کنترل مقدار this

گاهی نیاز داریم مقدار this را به صورت دستی تنظیم کنیم. برای این کار می‌توانیم از متدهای زیر استفاده کنیم:

  • bind(): ایجاد تابع جدید با this ثابت
  • call(): فراخوانی تابع با this و آرگومان‌های مشخص
  • apply(): مشابه call اما با آرگومان‌های آرایه

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


نکات کلیدی

در کار با this به این موارد توجه ویژه داشته باشید:

  • مقدار this در arrow function با تابع عادی متفاوت است
  • در strict mode، this در توابع عادی undefined می‌شود
  • می‌توان با استفاده از الگوی Factory یا Class این رفتار را مدیریت کرد