Функция Call в JavaScript

Рециклическое использование методов

Использование call() Методы, которые вы можете записать, чтобы использовать их на различных объектах.

Функции являются методами объектов

В JavaScript функции являются методами объектов.

Если функция не является методом объекта JavaScript, то это функция глобального объекта (см. предыдущую главу).

В следующем примере создается объект с тремя свойствами (firstName,lastName,fullName)。

Пример

var person = {
    firstName:"Bill",
    lastName: "Gates",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
person.fullName();		// вернет "Bill Gates"

Попробуйте сами

Атрибут fullName являетсяМетод.Объект person является этим методомВладельцу.

Атрибут fullName принадлежит Методы объекта person.

Метод call() в JavaScript

call() Методы - это предопределенные методы JavaScript.

Его можно использовать для вызова методов объекта-владельца, переданного в качестве аргумента.

Через call()Вы можете использовать метод другого объекта.

В этом примере вызывается метод fullName объекта person и используется для person1:

Пример

var person = {
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
}
var person1 = {
    firstName:"Bill",
    lastName: "Gates",
}
var person2 = {
    firstName:"Steve",
    lastName: "Jobs",
}
person.fullName.call(person1);  // вернет "Bill Gates"

Попробуйте сами

В этом примере вызывается метод fullName объекта person и используется для person2:

Пример

var person = {
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
}
var person1 = {
    firstName:"Bill",
    lastName: "Gates",
}
var person2 = {
    firstName:"Steve",
    lastName: "Jobs",
}
person.fullName.call(person2);  // вернет "Steve Jobs"

Попробуйте сами

Метод call() с параметрами

Метод call() принимает параметры:

Пример

var person = {
  fullName: function(city, country) {
    return this.firstName + " " + this.lastName + "," + city + "," + country;
  }
}
var person1 = {
  firstName:"Bill",
  lastName: "Gates"
}
person.fullName.call(person1, "Seattle", "USA");

Попробуйте сами