()Function call

متد ()call برای اجرای یک تابع استفاده میشه، اما با این تفاوت که می‌تونی مقدار this و آرگومان‌ها رو به صورت دستی مشخص کنی.

1️⃣ سینتکس

functionName.call(thisArg, arg1, arg2, ...);
  • functionName → تابعی که می‌خوای اجرا بشه.

  • thisArg → مقداری که می‌خوای درون تابع به عنوان this استفاده بشه.

  • arg1, arg2, ... → آرگومان‌هایی که به تابع پاس داده میشن.

2️⃣ مثال ساده

function greet(city, country) { console.log("Hi, I'm " + this.name + " from " + city + ", " + country); } const person = { name: "Sara" }; greet.call(person, "Tehran", "Iran");

📌 خروجی:

Hi, I'm Sara from Tehran, Iran

🔹 اینجا با استفاده از call، مقدار this برابر با شیء person قرار گرفت.

3️⃣ فرق ()call با اجرای مستقیم تابع

function test() { console.log(this); } test(); // window یا undefined (strict mode) test.call({x:1}); // {x:1}

4️⃣ استفاده برای وام گرفتن متد (Method Borrowing)

گاهی می‌تونیم متد یک شیء رو برای شیء دیگه استفاده کنیم:

const person1 = { name: "Ali", sayHello: function() { console.log("Hello " + this.name); } }; const person2 = { name: "Reza" }; person1.sayHello.call(person2); // Hello Reza

5️⃣ استفاده برای آرایه‌ها

بعضی وقت‌ها ()call برای استفاده از متدهای مخصوص آرایه روی آبجکت‌های شبیه آرایه کاربرد داره:

const numbers = [5, 3, 9, 1]; const max = Math.max.call(null, ...numbers); console.log(max); // 9

📌 خلاصه

  • ()call تابع رو اجرا می‌کنه و اجازه میده this رو مشخص کنیم.

  • آرگومان‌ها جدا جدا ارسال میشن.

  • کاربردها: تغییر this، وام گرفتن متدها، کار با آبجکت‌های شبیه آرایه.