O método bind () da função JavaScript permite que um objeto pegue um método emprestado de outro objeto sem copiar.
A sintaxe do bind()
método é:
func.bind(thisArg, arg1,… argN)
Aqui func
está uma função.
Parâmetros bind ()
O bind()
método inclui:
thisArg
- O valor fornecido comothis
parâmetro parafunc
. Ele será ignorado se a função associada for criada usando o novo operador.arg1,… argN
(opcional) - Argumentos a preceder a argumentos fornecidos para a função associada ao invocarfunc
.
Notas:
- Ao usar thisArg dentro de setTimeout, os valores primitivos são convertidos em objetos.
- Se
thisArg
não for especificado, o this do escopo de execução é tratado comothisArg
.
Valor de retorno de bind ()
- Retorna uma cópia da função fornecida com o valor especificado e argumentos iniciais (se fornecidos).
Exemplo: usando bind ()
this.x = 1; // "this" here is the global window object in browser const obj = ( x: 100, getX: function () ( return this.x; ), ); console.log(obj.getX()); // 100 const retrieveX = obj.getX; // the function gets invoked at the global scope console.log(retrieveX()); // 1 // Create a new function with 'this' bound to obj // global variable 'x' with obj's property 'x' are two separate entities const boundGetX = retrieveX.bind(obj); console.log(boundGetX()); // 100
Resultado
100 1 100
Uma vez que um método é passado em algum lugar separado do objeto - this
é perdido. A criação de uma função vinculada a partir da função, usando o objeto original, resolve esse problema perfeitamente
Leitura recomendada: chamada de função JavaScript ()