JavaScript Функція call()
Метод повторного використання
За допомогою методу call()
ви можете написати метод, який можна використовувати для різних об’єктів.
Усі функції є методами
У JavaScript усі функції є методами об’єктів.
Якщо функція не є методом об’єкта JavaScript, вона є функцією глобального об’єкта (див. попередній розділ).
У наведеному нижче прикладі створюється об’єкт із трьома властивостями: firstName, lastName, fullName.
Приклад
const person = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
// Поверне "John Doe":
person.fullName();
Спробуйте самі »
У наведеному вище прикладі this
відноситься до об’єкта person.
this.firstName означає firstName властивість this.
Те саме, що:
this.firstName означає властивість firstName для person.
Що таке this?
У JavaScript ключове слово this
посилається на об’єкт.
Який об’єкт, залежить від того, як this
викликається (використовується або викликається).
Ключове слово this
відноситься до різних об’єктів залежно від способу його використання:
У методі об’єкта this посилається на об’єкт. |
Окремо this стосується глобального об’єкта. |
У функції this посилається на глобальний об’єкт. |
У функції в строгому режимі this є undefined . |
У події this посилається на елемент, який отримав подію. |
Такі методи, як call() , apply() та bind() можуть відносити this до будь-якого об’єкту. |
Примітка
this
не є змінною. Це ключове слово. Ви не можете змінити значення this
.
Дивіться також:
JavaScript метод call()
Метод call()
є попередньо визначеним методом JavaScript.
Його можна використовувати для виклику (звертання) методу з об’єктом власника як аргументом (параметром).
За допомогою call()
об’єкт може використовувати метод, що належить іншому об’єкту.
У цьому прикладі викликається метод fullName person, використовуючи його на person1:
Приклад
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// Поверне "John Doe":
person.fullName.call(person1);
Спробуйте самі »
У цьому прикладі викликається метод fullName person, використовуючи його на person2:
Приклад
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// Поверне "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");
Спробуйте самі »