JavaScript Function bind()

Emprestimo de Função (Function Borrowing)

Ao usar o método bind(), um objeto pode emprestar um método de outro objeto.

O exemplo a seguir cria 2 objetos (person e membro).

O objeto membro empréstimo o método fullname do objeto person:

instância

const person = {
  firstName: "Bill",
  lastName: "Gates",
  fullName: function () {
    return this.firstName + " " + this.lastName;
  }
}
const membro = {
  firstName: "Hege",
  lastName: "Nilsen",
}
let fullName = person.fullName.bind(membro);

Experimente você mesmo

manter this

às vezes é necessário usar o método bind() para evitar a perda este.

No exemplo a seguir, o objeto person possui um método display. No método display,este refere-se ao objeto person:

instância

const person = {
  firstName: "Bill",
  lastName: "Gates",
  display: function () {
    let x = document.getElementById("demo");
    x.innerHTML = this.firstName + " " + this.lastName;
  }
}
person.display();

Experimente você mesmo

Quando a função é usada como callback,este perderá.

Este exemplo tentará exibir o nome da pessoa em 3 segundos, mas ele mostrará undefined:

instância

const person = {
  firstName: "Bill",
  lastName: "Gates",
  display: function () {
    let x = document.getElementById("demo");
    x.innerHTML = this.firstName + " " + this.lastName;
  }
}
setTimeout(person.display, 3000);

Experimente você mesmo

O método bind() resolveu este problema.

No exemplo a seguir, o método bind() é usado para vincular person.display a person.

Este exemplo será exibido em 3 segundos o nome da pessoa:

instância

const person = {
  firstName: "Bill",
  lastName: "Gates",
  display: function () {
    let x = document.getElementById("demo");
    x.innerHTML = this.firstName + " " + this.lastName;
  }
}
let display = person.display.bind(person);
setTimeout(display, 3000);

Experimente você mesmo

o que é this?

no JavaScript,este palavra-chave de referênciaobjeto.

referenciadoqualo objeto depende da forma como é chamado (usado ou chamado).

dependendo de como é usado, a palavra-chave este referencia diferentes objetos:

  • no método de um objeto,este referenciado peloobjeto.
  • usado sozinho,este referenciadoobjeto global.
  • no contexto de uma função,este referenciadoobjeto global.
  • no contexto de uma função, no modo estrito,este é undefined.
  • no evento,este referenciado para receber eventoselemento.
  • métodos como call(), apply() e bind() podem este referenciadoqualquer objeto.

Atenção:este não é uma variável. É uma palavra-chave. Você não pode modificar este o valor.

Veja também:

Tutorial:Este JavaScript