سلام دوستان! یکی از مهمترین موضوعات جاوااسکریپت، کلمهکلیدی this هست که توی شرایط مختلف مقدارهای متفاوتی داره. توی این قسمت میخوایم با این کلمهکلیدی آشنا بشیم.
توی این قسمت موارد زیر رو یاد میگیریم:
- this چیه
- this توی توابع چه مقداری داره
- مقدار this توی توابع با use strict
- مقدار this بیرون از توابع
- مقدار this در Arrow Functions
- مقدار this در توابع Constructor
- چطوری یک this ثابت و پایدار داشته باشیم؟
this چیه؟ 🤔
کلمهکلیدی
thisکه معمولاً توی توابع استفاده میشه، به قسمتی از کد اشاره میکنه که داره تابع رو اجرا میکنه. مقدارthisیک آبجکت هست.
فرض کنیم یک تابع توی جاوااسکریپت داره اجرا میشه. دونستن اینکه یک تابع چه جوری نوشته شده و یا توی کدوم قسمت از کد تعریف شده، روی مقدار this تاثیر نداره. فقط نحوهی فراخوانی اون تابع هست که مقدار this رو تعیین میکنه. برای اینکه مقدار this رو متوجه بشیم، کافیه فقط بدونیم این تابع به چه صورت تعریف و فراخوانی شده. امروز میخوایم بدونیم this توی شرایط مختلف چه مقدارهایی داره.
this توی توابع چه مقداری داره؟
مقدار this توی توابع به قسمتی از برنامه اشاره میکنه که تابع داره توی اون اجرا میشه. کد زیر رو در نظر بگیرید:
function f() { return this.name; }
ما به هیچ وجه نمیتونیم تشخیص بدیم که this توی این تابع به کدوم آبجکت اشاره میکنه. چون هنوز مشخص نیست این تابع کجا داره اجرا میشه. پس باید ببینیم این تابع کجا داره اجرا میشه.
توی کد زیر، ما تابع foo رو داریم توی بیرونیترین اسکوپ که اون رو با عنوان آبجکت سراسری (Global Object و توی مرورگر window) میشناسیم صدا میزنیم:
function foo() { alert(this); } foo(); // [object Window]