Middle
O que faz e para que serve a função function.prototype.bind?
sobes.tech IA
Resposta da IA
function.prototype.bind cria uma nova função que, ao ser chamada, tem o valor de this (ou seja, o contexto de chamada) definido e, opcionalmente, um conjunto definido de argumentos que precedem os passados na chamada da nova função.
Para que serve:
- Fixar o contexto (this): Especialmente útil em operações assíncronas, manipuladores de eventos ou ao passar métodos de objetos como callbacks, onde o comportamento padrão de
thispode mudar.bindgarante que o método seja executado no contexto do objeto original. - Aplicação parcial de funções (Currying): Permite criar uma nova função com argumentos iniciais fixados da função original.
Exemplo de fixação de contexto:
class MyClass {
constructor() {
this.name = 'MyClass Instance';
}
greet() {
console.log(`Olá de ${this.name}`);
}
}
const instance = new MyClass();
const greetMethod = instance.greet;
// greetMethod é chamado num contexto global (ou undefined em modo estrito), `this` não é MyClass
greetMethod(); // Output: Olá de undefined (ou erro)
const boundGreetMethod = instance.greet.bind(instance);
// boundGreetMethod é chamado com o contexto de instance
boundGreetMethod(); // Output: Olá de MyClass Instance
Exemplo de aplicação parcial:
function multiply(a, b) {
return a * b;
}
const multiplyByTwo = multiply.bind(null, 2); // Fixar o primeiro argumento em 2
console.log(multiplyByTwo(5)); // Output: 10 (equivale a multiply(2, 5))