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