Sobes.tech
Middle

Fala-me sobre as formas de manter o contexto em JavaScript: bind, call, apply. Em que é que eles se diferenciam?

sobes.tech IA

Resposta da IA

No JavaScript, as funções são objetos de primeira classe e têm um contexto de chamada dinâmico (this). Os métodos bind, call e apply permitem controlar esse contexto:

  • call — chama a função imediatamente, passando o contexto e os argumentos separadamente.

    func.call(context, arg1, arg2);
    
  • apply — semelhante ao call, mas os argumentos são passados como um array.

    func.apply(context, [arg1, arg2]);
    
  • bind — não chama a função imediatamente, mas retorna uma nova função com o contexto ligado e, opcionalmente, argumentos parcialmente aplicados.

    const boundFunc = func.bind(context, arg1);
    boundFunc(arg2);
    

Diferenças:

  • call e apply chamam a função imediatamente;
  • bind retorna uma nova função para ser chamada posteriormente;
  • apply é útil quando os argumentos já estão em um array;
  • bind é útil para manter o contexto em callbacks e manipuladores de eventos.