عملکردهای متفاوت this در زبان JavaScript
۲۸ آذر ۱۳۹۹
this
یکی از کلمههای کلیدی زبان JavaScript است که اگر آن را بهخوبی درک نکنید، میتواند برای شما مشکلساز شود. البته این کلمهی کلیدی بخشی اساسی از زبانهای برنامهنویسی شیگرا است اما عملکرد متفاوتی در زبانهای مختلف دارد. مثلا رفتار this
در JavaScript متفاوت از this
در زبان Java یا self
در Python است.
this
در زبان JavaScript به آبجکت اشاره دارد، به عبارت دیگر this
در یک تابع زبان JavaScript به آبجکتی اشاره دارد که آن را در بر گرفته است و value یا همان مقدار this
به نحوهی استفادهی آن بستگی دارد.
۱) عملکرد this در method
فانکشنی که در که یک آبجکت تعریف شده باشد، یک متد (method) بهحساب میآید و زمانیکه از this
در یک متد استفاده شود، به آبجکت آن اشاره دارد. بیایید این موضوع را با یک مثال ساده درک کنیم:
کلمهی کلیدی this
در متد greetings()
به آبجکت greet
اشاره دارد.
۲) عملکرد this در function
ممکن است درک عملکرد this
در فانکشنها کمی سختتر بقیه موارد باشد اما سعی میکنیم با یک مثال، درک آن را سادهتر کنیم:
در کد بالا یک فانکشن با نام dostuff()
وجود دارد که مقدار this
را برای ما در کنسول مرورگر چاپ میکند. مقدار this
در این فانکشن یک آبجکت با نام Window
است زیرا این فانکشن توسط یک آبجکت فراخوانی نشده و حتی اگر متغیری خارج از scope تعریف شود نیز به همین صورت است و به آبجکت Window
که یک آبجکت global است، پیوست (attach) میشود (در بخش بعدی این موضوع را بهتر درک خواهید کرد).
البته کلمهی کلیدی this
میتواند در حالت strict
، عملکرد متفاوتی نیز داشته باشد. به مثال زیر دقت کنید:
همانطور که مشاهده میکنید در حالت strict
، مقدار this
برابر با undefined
است. برای اطلاعات بیشتر میتوانید مستندات strict mode را مطالعه کنید.
۳) عملکرد this در خارج از function
اگر از کلمه کلیدی this
در خارج از یک فانکشن استفاده کنیم، مقدار آن برابر با آبجکت Window
خواهد بود و میتوانید به خصوصیتهای آبجکت Window
دسترسی داشته باشید. برای مثال:
۴) عملکرد this در event
تعامل کاربر در صفحههای وب از طریق eventهایی انجام میشود که بر روی المنتهای صفحهی وب تعریف شدهاند و زمانیکه کاربر تغییری در صفحه ایجاد کند، باعث اجرای یک یا حتی چند event مختلف میشود. انواع مختلفی از eventها در یک صفحهی وب وجود دارد، برای مثال میتوانیم به evenetهای کلیک، فشردن یک کلید یا بارگیری صفحهی وب اشاره داشته باشیم. کلمه کلیدی this
در یک event به المنت HTMLی اشاره دارد که آن event بر روی آن تعریف شده است. برای مثال:
<button onclick="doSomething(this)"> CLICK ME!</button>
هر زمانیکه بر روی این دکمه کلیک شود، فانکشن doSomething()
اجرا میشود و اگر آن فانشکن حاوی this
باشد، به المنتی اشاره میکند که آن event را اجرا کرده است زیرا آن المنت یک آبجکت در DOM (Document Object Model) بهحساب میآید.
برای کسب اطلاعات بیشتر از کلمه کلیدی this
در زبان JavaScript میتوانید به مستندات آن در MDN مراجعه کنید.
منبع: https://rylexr2678.hashnode.dev/what-is-this-in-javascript