صدا کردن تابع

از ویکی‌کد، دانشنامهٔ برنامه‌نویسی
(تغییرمسیر از 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");


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


منابع آموزشی