()Function apply

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

1️⃣ سینتکس

functionName.apply(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.apply(person, ["Tehran", "Iran"]);

📌 خروجی:

Hi, I'm Sara from Tehran, Iran

🔹 تفاوت با ()call اینجاست که آرگومان‌ها داخل یک آرایه قرار می‌گیرند.

3️⃣ وام گرفتن متد (Method Borrowing)

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

4️⃣ استفاده در توابع ریاضی

مثلاً پیدا کردن بیشینه یا کمینه از آرایه:

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

🔹 null به این معنی است که تابع Math.max هیچ شیء خاصی به عنوان this نیاز ندارد.

5️⃣ جمع‌بندی تفاوت ()call و ()apply

ویژگیcall()apply()
آرگومان‌هاجدا جداداخل آرایه
thisقابل تنظیمقابل تنظیم
کاربردتابع رو اجرا با this و آرگومان‌هاتابع رو اجرا با this و آرایه‌ای از آرگومان‌ها