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