Sobes.tech
Middle

Cosa sono i metodi call, apply e bind in JavaScript?

sobes.tech AI

Risposta dell'AI

call, apply e bind sono metodi disponibili per tutte le funzioni in JavaScript. Sono usati per gestire il contesto di esecuzione della funzione (il valore di this).

  • call: Chiama una funzione con un valore this specificato e argomenti separati.
    // Esempio di utilizzo di call
    function greet() {
      return "Ciao, " + this.name + "!";
    }
    
    const person = { name: "Ivan" };
    
    console.log(greet.call(person)); // Risultato: Ciao, Ivan!
    
  • apply: Chiama una funzione con un valore this specificato e argomenti passati sotto forma di array o pseudoarray.
    // Esempio di utilizzo di apply
    function sum(a, b) {
      return this.base + a + b;
    }
    
    const context = { base: 10 };
    const numbers = [5, 3];
    
    console.log(sum.apply(context, numbers)); // Risultato: 18
    
  • bind: Crea una nuova funzione che, quando chiamata, ha un valore this fissato. La funzione originale non viene chiamata immediatamente.
    // Esempio di utilizzo di bind
    const module = {
      x: 42,
      getX: function() {
        return this.x;
      }
    };
    
    const unboundGetX = module.getX;
    console.log(unboundGetX()); // Risultato: undefined (this punta all'oggetto globale)
    
    const boundGetX = unboundGetX.bind(module);
    console.log(boundGetX()); // Risultato: 42 (this è legato a module)
    

Principali differenze:

Metodo Passaggio di argomenti Chiamata della funzione Valore di ritorno
call Separati (da virgola) Immediatamente Risultato della funzione
apply In forma di array o pseudoarray Immediatamente Risultato della funzione
bind Separati (da virgola) Non immediatamente Nuova funzione con this legato