تابع Apply

از ویکی‌کد، دانشنامهٔ برنامه‌نویسی
پرش به ناوبری پرش به جستجو
Main Page Tutorial
JavaScript-menu.png
موارد آموزشی
فرم‌ها در جاوا اسکریپت
تعریف شیء در جاوا اسکریپت
تابع در جاوا اسکریپت
۱تعریف تابع
۲پارامتر توابع
۳فراخوانی تابع
۴صدا کردن تابع
۵تابع Apply
۶بسته‌ها
HTML DOM در جاوا اسکریپت
Browser BOM در جاوا اسکریپت
AJAX در جاوا اسکریپت
JSON در جاوا اسکریپت
جی‌کوئری در برابر جاوا اسکریپت
مثال‌های جاوا اسکریپت
مرجع جاوا اسکریپت

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

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

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

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

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

مثال

 1var person = {
 2  fullName: function() {
 3    return this.firstName + " " + this.lastName;
 4  }
 5}
 6var person1 = {
 7  firstName: "Mary",
 8  lastName: "Doe"
 9}
10person.fullName.apply(person1);  // Will return "Mary Doe"


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


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

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

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

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

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

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

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

مثال

 1var person = {
 2  fullName: function(city, country) {
 3    return this.firstName + " " + this.lastName + "," + city + "," + country;
 4  }
 5}
 6var person1 = {
 7  firstName:"John",
 8  lastName: "Doe"
 9}
10person.fullName.apply(person1, ["Oslo", "Norway"]);


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


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

مثال

 1var person = {
 2  fullName: function(city, country) {
 3    return this.firstName + " " + this.lastName + "," + city + "," + country;
 4  }
 5}
 6var person1 = {
 7  firstName:"John",
 8  lastName: "Doe"
 9}
10person.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) مقدار دهی می‌شود.


منابع آموزشی