Sobes.tech
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:

  1. 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 this pode mudar. bind garante que o método seja executado no contexto do objeto original.
  2. 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))