صدا کردن تابع

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


استفاده دوباره از متد[ویرایش | ویرایش]

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

تمامی توابع متد هستند[ویرایش | ویرایش]

در جاوا اسکریپت تمامی توابع متدهای شیء هستند.

اگر یک تابع متدی از یک شیء در جاوا اسکریپت نباشد، این تابع متد شیء کلی (Global) است. (<translate> نکته</translate> <translate> نکته:</translate> برای اطلاعات بیشتر به فصل قبل مراجعه کنید)

مثال زیر یک شیء جدید با سه ویژگی 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");


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


منابع آموزشی[ویرایش]