Вызов функции JavaScript
Повторное использование метода
С помощью call()
метода вы можете написать метод, который можно использовать для разных объектов.
Все функции являются методами
В JavaScript все функции являются объектными методами.
Если функция не является методом объекта JavaScript, она является функцией глобального объекта (см. предыдущую главу).
В приведенном ниже примере создается объект с тремя свойствами: firstName, lastName, fullName.
Пример
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
// This will return "John Doe":
myObject.fullName();
это ключевое слово
В определении функции this
относится к «владельцу» функции.
В приведенном выше примере this
это объект person , который «владеет»
функцией fullName .
Другими словами, this.firstName означает свойство firstName этого объекта .
Узнайте больше о this
ключевом слове в JS this Keyword .
JavaScript-метод call()
Этот call()
метод является предопределенным методом JavaScript.
Его можно использовать для вызова (вызова) метода с объектом-владельцем в качестве аргумента (параметра).
С call()
объект может использовать метод, принадлежащий другому объекту.
В этом примере вызывается метод fullName человека, использующий его для человека1 :
Пример
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// This will return "John Doe":
person.fullName.call(person1);
В этом примере вызывается метод fullName человека, использующий его для человека2 :
Пример
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// This will return "Mary Doe"
person.fullName.call(person2);
Метод call() с аргументами
Метод 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");