JavaScript:صدا کردن تابع در جاوااسکریپت
محتویات
استفاده دوباره از متد
با متدcall()
شما میتوانید متدی بنویسید که روی اشیاء مختلف قابل استفاده باشد.[۱]
تمامی توابع متد هستند
در جاوااسکریپت تمامی توابع متدهای شیء هستند.
اگر یک تابع متدی از یک شیء در جاوااسکریپت نباشد، این تابع متد شیء کلی (به انگلیسی: Global) است. (برای اطلاعات بیشتر به فصل قبل مراجعه کنید)
مثال زیر یک شیء جدید با سه ویژگی firstName ,lastName و fullName میسازد.
مثال
var person = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
person.fullName(); // Will return "John Doe"
کلمه کلیدی this
در تعریف تابع، کلمه کلیدیthis
به «صاحب» تابع اشاره دارد.
در مثال بالا، کلمه کلیدیthis
به شیء person اشاره دارد که «صاحب» تابع fullName است.
به عبارتی دیگر، this.firstName به معنای ویژگی firstName این شیء است.
مطالب بیشتری را در مورد کلمه کلیدیthis
در فصل کلمه کلیدی this بخوانید.
متد ()Call در جاوااسکریپت
متدcall()
یک متد از پیش تعریف شده در جاوااسکریپت است.
از این متد میتوان برای اجرا (فراخوانی) یک متد با یک شیء صاحب به صورت یک آرگومان (پارامتر) استفاده کرد.
![]() | با متدcall() یک شیء از متدی استفاده میکند که مربوط به یک شیء دیگر است. |
مثال زیر، متد fullName شیء person را روی شیء person1 فراخوانی میکند:
مثال
var person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var person1 = {
firstName:"John",
lastName: "Doe"
}
var person2 = {
firstName:"Mary",
lastName: "Doe"
}
person.fullName.call(person1); // Will return "John Doe"
این مثال متد fullName شیء person را روی شیء person2 فراخوانی میکند:
مثال
var person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var person1 = {
firstName:"John",
lastName: "Doe"
}
var person2 = {
firstName:"Mary",
lastName: "Doe"
}
person.fullName.call(person2); // Will return "Mary Doe"
متد ()Call با آرگومانها
متد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");
==منابع آموزشی==