الگوهای bindcallapply
الگوهای bind، call و apply در جاوااسکریپت
در جاوااسکریپت، مفهوم this یکی از چالشبرانگیزترین مفاهیم برای توسعهدهندگان است. سه متد bind، call و apply به شما کمک میکنند تا کنترل بهتری روی مقدار this در توابع داشته باشید. برای درک عمیقتر مفهوم this میتوانید اینجا را کلیک نمایید.
تفاوتهای کلیدی بین bind، call و apply
متد | کاربرد | نحوه ارسال آرگومانها |
---|---|---|
call | فراخوانی فوری تابع با مقدار this مشخص | لیست آرگومانها به صورت جداگانه |
apply | فراخوانی فوری تابع با مقدار this مشخص | آرایه از آرگومانها |
bind | ایجاد تابع جدید با مقدار this ثابت | لیست آرگومانها به صورت جداگانه |
کاربردهای عملی
این سه متد در موقعیتهای مختلفی کاربرد دارند:
- قرض گرفتن متدها: میتوانید متدهای یک شیء را برای شیء دیگر استفاده کنید.
- تنظیم this در callbackها: هنگام استفاده از توابع در event listenerها.
- تابعسازی جزئی: با 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 که پایهای برای درک این متدهاست، میتوانید به این آموزش مراجعه کنید.