Função Call do JavaScript

Reutilização de métodos

Usar call() Métodos, você pode escrever métodos que podem ser usados em diferentes objetos.

Funções são métodos de objetos

No JavaScript, funções são métodos de objetos.

Se uma função não for um método do objeto JavaScript, então é uma função do objeto global (veja o capítulo anterior).

O exemplo a seguir cria um objeto com três propriedades(firstNamelastNamefullName)。

Exemplo

var person = {
    firstName:"Bill",
    lastName: "Gates",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
person.fullName();		// Retornará "Bill Gates"

Experimente Pessoalmente

A propriedade fullName é umMétodo。O objeto person é o métodoProprietário

A propriedade fullName pertence a Métodos do objeto person

Método call() do JavaScript

call() Métodos são métodos JavaScript pré-definidos.

Ele pode ser usado para chamar métodos do objeto proprietário como parâmetro.

através call(),você pode usar métodos que pertencem a outro objeto.

Este exemplo chama o método fullName do person e o usa para person1:

Exemplo

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);  // Retornará "Bill Gates"

Experimente Pessoalmente

Este exemplo chama o método fullName do person e o usa para person2:

Exemplo

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);  // Retornará "Steve Jobs"

Experimente Pessoalmente

Método call() com parâmetros

O método call() pode aceitar os seguintes parâmetros:

Exemplo

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");

Experimente Pessoalmente