()Function bind

متد ()bind یک نسخه جدید از تابع می‌سازه که همیشه this مشخصی دارد و می‌تواند آرگومان‌های پیش‌فرض هم داشته باشد.

🔹 تفاوت اصلی با ()call و ()apply این است که:

  • ()call و ()apply تابع را همان لحظه اجرا می‌کنند.

  • ()bind یک تابع جدید می‌سازد که بعداً می‌توان آن را فراخوانی کرد.

1️⃣ سینتکس

const newFunc = func.bind(thisArg, arg1, arg2, ...);
  • func → تابع اصلی

  • thisArg → مقداری که this در تابع خواهد بود

  • arg1, arg2, ... → آرگومان‌های پیش‌فرض

2️⃣ مثال ساده

const person = { name: "Sara", greet: function(greeting) { console.log(greeting + ", I'm " + this.name); } }; const greetPerson = person.greet.bind(person, "Hello"); greetPerson(); // Hello, I'm Sara

🔹 this همیشه به person اشاره می‌کند و آرگومان "Hello" از قبل تنظیم شده است.

3️⃣ استفاده در callback

یکی از کاربردهای رایج ()bind جلوگیری از تغییر this در callback ها است:

const person = { name: "Ali", greet: function() { console.log("Hi, I'm " + this.name); } }; setTimeout(person.greet.bind(person), 1000); // Hi, I'm Ali

🔹 بدون bind(), this در setTimeout به window اشاره می‌کرد.

4️⃣ پیش‌تنظیم آرگومان‌ها (Partial Application)

function multiply(a, b) { return a * b; } const double = multiply.bind(null, 2); // a = 2 ثابت شد console.log(double(5)); // 10

🔹 با این روش می‌توان آرگومان‌ها را از قبل تنظیم کرد و تابع جدید ساخت.

5️⃣ جمع‌بندی

  • ()bind یک نسخه جدید از تابع می‌سازد

  • این نسخه همیشه this مشخصی دارد

  • می‌توان آرگومان‌های پیش‌فرض تعریف کرد

  • مناسب برای callback ها، event handlers، و partial application