توابع Apply در JavaScript

روش‌ها

از طریق apply() می‌توانید روش‌هایی برای اشیاء مختلف بنویسید.

روش apply() در JavaScript

apply() روش‌ها با call() روش‌ها بسیار مشابه هستند:

در این مثال،person از fullName روش به ناماعمالبه person1:

مثال

var person = {
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
}
var person1 = {
    firstName: "Bill",
    lastName: "Gates",
}
person.fullName.apply(person1);  // بازمی‌گردد به "Bill Gates"

آزمایش کنید

تفاوت call() و apply()

تفاوت‌ها در:

call() روشی که پارامترها را جداگانه می‌پذیرد.

apply() روشی که پارامترها را به صورت آرایه می‌پذیرد.

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

روش apply() با پارامترهای موجود

apply() روشی که پارامترها را در قالب آرایه می‌پذیرد:

مثال

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

آزمایش کنید

و call() مقایسه روش:

مثال

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

آزمایش کنید

روش max را بر روی آرایه‌ها شبیه‌سازی کنید

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

مثال

Math.max(1,2,3);  // نیز 3 را برمی‌گرداند

آزمایش کنید

به دلیل اینکه آرایه‌های JavaScript تابع max() ندارند، می‌توانید از Math.max() تابع.

مثال

Math.max.apply(null, [1,2,3]); // نیز 3 را برمی‌گرداند

آزمایش کنید

پارامتر اول (null) مهم نیست. در این مثال استفاده نشده است.

این مثال‌ها نتایج مشابهی را نشان می‌دهند:

مثال

Math.max.apply(Math, [1,2,3]); // نیز 3 را برمی‌گرداند

آزمایش کنید

مثال

Math.max.apply(" ", [1,2,3]); // نیز 3 را برمی‌گرداند

آزمایش کنید

مثال

Math.max.apply(0, [1,2,3]); // نیز 3 را برمی‌گرداند

آزمایش کنید

حالت سخت‌گیرانه JavaScript

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