Método bind

O método bind permite vincular um contexto a uma função. Como primeiro parâmetro, deve-se passar o contexto, e nos parâmetros subsequentes - os parâmetros da função. O método retorna uma nova função, dentro da qual this será igual ao contexto passado.

Sintaxe

javascriptfunção.bind(contexto, parâmetro1, parâmetro2...);

Exemplo

Suponha que temos um input:

html<input id="elem" value="text">

Suponha que a referência a este input esteja armazenada na variável elem:

javascriptlet elem = document.querySelector('#elem');

Suponha que também temos a seguinte função func:

javascriptfunction func(param1, param2) {
  console.log(this.value + param1 + param2);
}

Vamos usar bind para criar uma nova função, que será uma cópia da função func, mas this nela sempre será igual a elem:

javascriptlet newFunc = func.bind(elem);

Agora na variável newFunc há uma função. Vamos chamá-la, passando no primeiro parâmetro '1', e no segundo '2':

javascriptnewFunc('1', '2');

Vamos juntar tudo:

javascriptlet elem = document.getElementById('elem');

function func(param1, param2) {
  console.log(this.value + param1 + param2);
}

let newFunc = func.bind(elem);
newFunc('1', '2'); // exibirá 'text12'

Exemplo

Não é necessário armazenar o resultado do bind em uma nova função newFunc, pode-se simplesmente sobrescrever func:

javascriptfunc = func.bind(elem);

Veja também

  • método call,
    que chama uma função com um contexto
  • método apply,
    que chama uma função com um contexto