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