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.