JavaScript Вызвать функцию
Повторное использование метода
С помощью метода call()
можно написать метод, который можно использовать для различных объектов.
Все функции являются методами
В JavaScript все функции являются методами объектов.
Если функция не является методом объекта JavaScript, то она является функцией глобального объекта (см. предыдущую главу).
В приведенном ниже примере создается объект с 3 свойствами, firstName, lastName, fullName.
Пример
var person = {
firstName:"Андрей",
lastName: "Щипунов",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
person.fullName(); // Будет возвращать "Андрей Щипунов"
Попробуйте сами »
Ключевое слово this
В определении функции this
относится к "владельцу" функции.
В приведенном выше примере this
объект person,
которому "принадлежит" функция fullName.
Другими словами, this.firstName означает, что firstName свойство объекта this.
Подробнее об ключевом слове this
в JS Ключевое слово this.
JavaScript метод call()
Метод call()
является предопределенным методом JavaScript.
Он может быть использован для вызова метода с объектом владельца в качестве аргумента (параметра).
С помощью функции call()
, объект может использовать метод, принадлежащий другому объекту.
В этом примере вызывается метод fullName person, использующий его на person1:
Пример
var person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var person1 = {
firstName:"Андрей",
lastName: "Щипунов"
}
var person2 = {
firstName:"Татьяна",
lastName: "Щипунова"
}
person.fullName.call(person1); // Будет возвращать "Андрей Щипунов"
В этом примере вызывается метод fullName person, использующий его на person2:
Пример
var person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var person1 = {
firstName:"Андрей",
lastName: "Щипунов"
}
var person2 = {
firstName:"Татьяна",
lastName: "Щипунова"
}
person.fullName.call(person2); // Будет возвращать "Татьяна Щипунова"
Метод call() с аргументами
Метод call()
может принимать аргументы:
Пример
var person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName
+ "," + city + "," + country;
}
}
var person1 = {
firstName:"Андрей",
lastName: "Щипунов"
}
person.fullName.call(person1, "Пермь", "Россия");