14
0

تفاوت بین استفاده از Function.prototype.apply() و Function.prototype.call() برای فراخوانی یه تابع چیه؟

const func = function() {
    alert("Hello world!");
};

تفاوت‌های func.apply() و func.call()

آیا تفاوتی از نظر عملکرد بین این دو روش وجود داره؟ کی بهتره از call استفاده کنیم و کی از apply؟

0
پاسخ کاربردی

تفاوت اینه که apply بهت اجازه می‌ده تابع رو با آرگومان‌ها به صورت آرایه فراخوانی کنی، ولی call نیاز داره که پارامترها به صورت جداگانه وارد بشن.

میتونی داکیومنت هاشون رو روی MDN از اینجا و اینجا بخونی

سینتکس تقریبی:

theFunction.apply(valueForThis, arrayOfArgs)

theFunction.call(valueForThis, arg1, arg2, ...)

همچنین از ES6 به بعد، می‌تونی آرایه رو با استفاده از عملگر پخش (spread) برای استفاده با تابع call تبدیل کنی. 

کد نمونه:

function theFunction(name, profession) {
    console.log("My name is " + name + " and I am a " + profession +".");
}
theFunction("John", "fireman");
theFunction.apply(undefined, ["Susan", "school teacher"]);
theFunction.call(undefined, "Claude", "mathematician");
theFunction.call(undefined, ...["Matthew", "physicist"]);
ارسال پاسخ به سوال بالا

برای ارسال پاسخ باید وارد اکانتت بشی

اگر پاسخت شامل تکه کدی میشه، از منوی ویرایشگر پایین، تکه کدی که نوشتی رو انتخاب کن و بعد از طریق زبان کدی که نوشتی رو انتخاب کن تا کدت داخل بلاک مخصوص زبان خودش قرار بگیره و کدت خواناتر برای بقیه نشون داده بشه

اگه پاسخت رفرنسی داره، لینک رفرنس رو هم بذار تا پاسختت کاملتر و معتبر تر بشه