Sobes.tech
Middle

Parlami dei modi per mantenere il contesto in JavaScript: bind, call, apply. In cosa si differenziano?

sobes.tech AI

Risposta dell'AI

In JavaScript, le funzioni sono oggetti di prima classe e hanno un contesto di chiamata dinamico (this). I metodi bind, call e apply consentono di gestire questo contesto:

  • call — chiama la funzione immediatamente, passando il contesto e gli argomenti separatamente.

    func.call(context, arg1, arg2);
    
  • apply — simile a call, ma gli argomenti vengono passati come array.

    func.apply(context, [arg1, arg2]);
    
  • bind — non chiama immediatamente la funzione, ma restituisce una nuova funzione con il contesto legato e, opzionalmente, argomenti parzialmente applicati.

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

Differenze:

  • call e apply chiamano la funzione immediatamente;
  • bind restituisce una nuova funzione da chiamare più tardi;
  • apply è utile quando gli argomenti sono già in un array;
  • bind è utile per mantenere il contesto nei callback e negli handler di eventi.