this
کلمه کلیدی this یکی از مفاهیم مهم و گاهی گیجکننده در جاوااسکریپت است.
this به شیئی اشاره میکند که در حال حاضر کد درون آن اجرا میشود.
1️⃣ this در یک شیء ساده
وقتی متدی داخل یک شیء تعریف میکنیم، this به همان شیء اشاره میکند.
🔹 در اینجا this.name → به property name شیء person اشاره دارد.
2️⃣ this در خارج از شیء
وقتی در Global Scope (بیرون از هر شیء) از this استفاده کنیم:
-
در مرورگر → به شیء
windowاشاره دارد. -
در Node.js → به شیء
globalاشاره دارد.
3️⃣ this در Function عادی
اگر تابع بهصورت عادی فراخوانی شود (نه به عنوان متد شیء)، مقدار this برابر با undefined (در strict mode) یا window (در حالت معمولی) است.
4️⃣ this در Method یک شیء
اگر تابع به عنوان متد شیء فراخوانی شود، this به همان شیء اشاره میکند:
5️⃣ this و Constructor Functions
در توابع سازنده (Constructor Functions)، this به شیء جدیدی که ساخته میشود اشاره دارد:
6️⃣ this در Arrow Functions
⚡ تفاوت مهم: در Arrow Function مقدار this به محیط بیرونی خودش (lexical scope) بستگی دارد و تغییر نمیکند.
🔹 یعنی arrow functionها this مخصوص خودشان ندارند و از context بیرونی استفاده میکنند.
7️⃣ استفاده از call(), apply(), bind()
میتوانیم بهطور دستی مقدار this را تغییر دهیم:
📑 جدول خلاصه
| موقعیت | مقدار this |
|---|---|
| در شیء (متد) | به همان شیء اشاره دارد |
| در تابع عادی (strict mode) | undefined |
| در تابع عادی (غیر strict mode) | window (در مرورگر) |
| در Constructor Function | شیء جدید ساختهشده |
| در Global Scope | window (مرورگر) یا global (Node.js) |
| در Arrow Function | مقدار this از scope بیرونی گرفته میشود |
| با call/apply/bind | مقدار this به صورت دستی تعیین میشود |
HTML
Tailwind Css
Bootstrap 5
Java script
++C
Python
Three.js
Gsap
Sass
SQL
React