با متدapply( ) ميتوان متد نوشته شئي را براي شئ هاي مختلف استفاده نمود.
مثال ـ دراين مثال متدfullName از person را براي شئ person1 بكار گرفته ايم .
const person = { fullName: function() { return this.firstName + " " + this.lastName; } } const person1 = { firstName: "Mary", lastName: "Doe" } // This will return "Mary Doe": person.fullName.apply(person1);
اختلاف اين دو مطابق زيراست:
متدcall( ) آرگومان ها را با تفكيك كاما در يافت ميكند .
اماapply يك آرايه را بعنوان آرگومان در يافت ميكند.
اگر بخواهيد بجاي ليست آرگومان از آرايه استفاده كنيد، متدapply( ) بسيار مفيد است.
متدapply يك آرايه را بعنوان آرگومان مي پذيرد .
مثال ـ متدapply با آرگومان
const person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName + "," + city + "," + country;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
person.fullName.apply(person1, ["Oslo", "Norway"]);
مثال ـ همان مثال باcall() كه ميتوانيد مقايسه نمائيد .
const person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName + "," + city + "," + country;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
person.fullName.call(person1, "Oslo", "Norway");
با استفاده از متدMath.max( ) ميتوان بزرگترين عدد در ليستي از اعداد را بدست آورد.
مثال ـ پيدا كردن ماكزيمم باMath.max( )
Math.max(1,2,3); // Will return 3
از آنجائيكه آرايه هاي جاوااسكريپت داراي متدmax( ) نيستند، بجاي آن از اين Math.max( ) استفاده ميكنيم .
مثال ـ پيدا كردن ماكريمم آرايه
Math.max.apply(null, [1,2,3]); // Will also return 3
اولين آرگومانnull است ، مهم نيست چون ازدر اين مثال استفاده نمي شود.
مثال ـ اين مثال هم نتيجه مشابه مثال فوق دارد
Math.max.apply(Math, [1,2,3]); // Will also return 3
اگر بجاي آرگومان اول ليتراهاي"" و 0 در مثال بالا قرار دهيم نتيجه مشابه است.
توجه ـ در حالت سختگيرانه جاوااسكريپت ، اگر اولين آرگومانapply( ) شئ نباشد، مالك تابع فراخواني شده مي شود .در حالت غيردقيق به شئ جهاني تبديل ميگردد.