الگوهای bindcallapply

الگوهای bind، call و apply در جاوااسکریپت

در جاوااسکریپت، مفهوم this یکی از چالش‌برانگیزترین مفاهیم برای توسعه‌دهندگان است. سه متد bind، call و apply به شما کمک می‌کنند تا کنترل بهتری روی مقدار this در توابع داشته باشید. برای درک عمیق‌تر مفهوم this می‌توانید اینجا را کلیک نمایید.


تفاوت‌های کلیدی بین bind، call و apply

متد کاربرد نحوه ارسال آرگومان‌ها
call فراخوانی فوری تابع با مقدار this مشخص لیست آرگومان‌ها به صورت جداگانه
apply فراخوانی فوری تابع با مقدار this مشخص آرایه از آرگومان‌ها
bind ایجاد تابع جدید با مقدار this ثابت لیست آرگومان‌ها به صورت جداگانه

کاربردهای عملی

این سه متد در موقعیت‌های مختلفی کاربرد دارند:

  1. قرض گرفتن متدها: می‌توانید متدهای یک شیء را برای شیء دیگر استفاده کنید.
  2. تنظیم this در callbackها: هنگام استفاده از توابع در event listenerها.
  3. تابع‌سازی جزئی: با bind می‌توانید نسخه‌های خاصی از یک تابع ایجاد کنید.
متد bind یک تابع جدید ایجاد می‌کند که مقدار this آن همیشه ثابت است، حتی اگر تابع در زمینه دیگری فراخوانی شود.

مثال‌های کد

در اینجا چند مثال عملی از کاربرد این متدها را مشاهده می‌کنید:

مثال call:

function greet() {
  console.log(`سلام ${this.name}`);
}
const person = {name: 'علی'};
greet.call(person); // خروجی: سلام علی

مثال apply:

function introduce(age, job) {
  console.log(`من ${this.name}، ${age} ساله و ${job} هستم.`);
}
const person = {name: 'زهرا'};
introduce.apply(person, [30, 'طراح']); // خروجی: من زهرا، 30 ساله و طراح هستم.

برای مطالعه بیشتر درباره مفهوم this که پایه‌ای برای درک این متدهاست، می‌توانید به این آموزش مراجعه کنید.