تابع Apply

از ویکی‌کد، دانشنامهٔ برنامه‌نویسی
پرش به ناوبری پرش به جستجو


استفاده دوباره از متد

با متد apply()، شما می‌توانید متدی بنویسید که روی اشیاء مختلف قابل استفاده باشد.[۱]

متد apply() در جاوا اسکریپت

متد apply() شبیه به متد call() (در فصل قبلی) است.

در این مثال، متد fullName شیء person روی شیء person1 اجرا می‌گردد:

مثال

var person = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}
var person1 = {
  firstName: "Mary",
  lastName: "Doe"
}
person.fullName.apply(person1);  // Will return "Mary Doe"


مشاهدهٔ نتیجه


تفاوت بین متدهای call() و apply()

تفاوت آنها درموارد زیر است:

متد call() آرگومان‌ها را به صورت جداگانه دریافت می‌کند.

متد apply() آرگومان‌ها را به صورت یک آرایه دریافت می‌کند.

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

متد apply() با آرگومان ها

متد apply() آرگومان‌ها را درون یک آرایه دریافت می‌کند:

مثال

var person = {
  fullName: function(city, country) {
    return this.firstName + " " + this.lastName + "," + city + "," + country;
  }
}
var person1 = {
  firstName:"John",
  lastName: "Doe"
}
person.fullName.apply(person1, ["Oslo", "Norway"]);


مشاهدهٔ نتیجه


در مقایسه با متد call() :

مثال

var person = {
  fullName: function(city, country) {
    return this.firstName + " " + this.lastName + "," + city + "," + country;
  }
}
var person1 = {
  firstName:"John",
  lastName: "Doe"
}
person.fullName.call(person1, "Oslo", "Norway");


مشاهدهٔ نتیجه


شبیه سازی متد Max روی آرایه ها

شما می‌توانید بزرگترین عدد (درون لیستی از اعداد) را با استفاده از متد Math.max() بیابید:

مثال

Math.max(1,2,3);  // Will return 3


مشاهدهٔ نتیجه


از آنجایی که آرایه‌ها در جاوا اسکریپت متد max() ندارند، شما می‌توانید به جای آن متد، متد Math.max() را روی آن apply (به فارسی: اجرا) کنید.

مثال

Math.max.apply(null, [1,2,3]); // Will also return 3


مشاهدهٔ نتیجه


مقدار اولین آرگومان (null) مهم نیست. این آرگومان در این مثال استفاده نمی‌شود.

این مثال‌ها نتیجه یکسانی دارند:

مثال

Math.max.apply(Math, [1,2,3]); // Will also return 3


مشاهدهٔ نتیجه


مثال

Math.max.apply(" ", [1,2,3]); // Will also return 3


مشاهدهٔ نتیجه


مثال

Math.max.apply(0, [1,2,3]); // Will also return 3


مشاهدهٔ نتیجه


حالت سخت گیرانه در جاوا اسکریپت

در حالت سخت گیرانه (Strict mode) در جاوا اسکریپت، اگر آرگومان اول متد apply() یک شیء نباشد، این آرگومان با صاحب (شیء) که تابع را اجرا کرده‌است، مقدار دهی می‌شود. در حالت غیر سخت گیرانه و عادی جاوا اسکریپت پارامتر اول با شیء کلی (Global) مقدار دهی می‌شود.


منابع آموزشی