Sobes.tech
Middle

Vorbește-mi despre modalitățile de păstrare a contextului în JavaScript: bind, call, apply. Cu ce diferă?

sobes.tech AI

Răspuns de la AI

În JavaScript, funcțiile sunt obiecte de primă clasă și au un context de apelare dinamic (this). Metodele bind, call și apply permit gestionarea acestui context:

  • call — apelează funcția imediat, transmitând contextul și argumentele separat.

    func.call(context, arg1, arg2);
    
  • apply — similar cu call, dar argumentele sunt transmise sub formă de array.

    func.apply(context, [arg1, arg2]);
    
  • bind — nu apelează funcția imediat, ci returnează o funcție nouă cu contextul legat și, opțional, argumente parțial aplicate.

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

Diferențe:

  • call și apply apelează funcția imediat;
  • bind returnează o funcție nouă pentru apelare ulterioară;
  • apply este util când argumentele sunt deja într-un array;
  • bind este util pentru păstrarea contextului în callback-uri și handler-e de evenimente.