Sobes.tech
Middle

Cuéntame sobre las formas de mantener el contexto en JavaScript: bind, call, apply. ¿En qué se diferencian?

sobes.tech AI

Respuesta de la IA

En JavaScript, las funciones son objetos de primera clase y tienen un contexto de llamada dinámico (this). Los métodos bind, call y apply permiten gestionar este contexto:

  • call — llama a la función inmediatamente, pasando el contexto y los argumentos por separado.

    func.call(context, arg1, arg2);
    
  • apply — similar a call, pero los argumentos se pasan en forma de array.

    func.apply(context, [arg1, arg2]);
    
  • bind — no llama a la función inmediatamente, sino que devuelve una nueva función con el contexto ligado y, opcionalmente, con argumentos parcialmente aplicados.

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

Diferencias:

  • call y apply llaman a la función de inmediato;
  • bind devuelve una nueva función para ser llamada más tarde;
  • apply es útil cuando los argumentos ya están en un array;
  • bind es útil para mantener el contexto en callbacks y manejadores de eventos.