Sobes.tech
Middle

Ce sunt metodele call, apply și bind în JavaScript?

sobes.tech AI

Răspuns de la AI

call, apply și bind sunt metode disponibile pentru toate funcțiile în JavaScript. Ele sunt utilizate pentru gestionarea contextului de execuție al funcției (valoarea this).

  • call: Apelează o funcție cu o valoare this specificată și argumente separate.
    // Exemplu de utilizare a call
    function greet() {
      return "Salut, " + this.name + "!";
    }
    
    const person = { name: "Ivan" };
    
    console.log(greet.call(person)); // Output: Salut, Ivan!
    
  • apply: Apelează o funcție cu o valoare this specificată și argumente transmise sub formă de array sau pseudo-array.
    // Exemplu de utilizare a apply
    function sum(a, b) {
      return this.base + a + b;
    }
    
    const context = { base: 10 };
    const numbers = [5, 3];
    
    console.log(sum.apply(context, numbers)); // Output: 18
    
  • bind: Creează o nouă funcție care, atunci când este apelată, are o valoare this fixată. Funcția originală nu este apelată imediat.
    // Exemplu de utilizare a bind
    const module = {
      x: 42,
      getX: function() {
        return this.x;
      }
    };
    
    const unboundGetX = module.getX;
    console.log(unboundGetX()); // Output: undefined (this indică către obiectul global)
    
    const boundGetX = unboundGetX.bind(module);
    console.log(boundGetX()); // Output: 42 (this este legat de module)
    

Principalele diferențe:

Metodă Transmiterea argumentelor Apelarea funcției Valoarea de returnare
call Separat (prin virgulă) Imediat Rezultatul funcției
apply Sub formă de array sau pseudo-array Imediat Rezultatul funcției
bind Separat (prin virgulă) Nu imediat O nouă funcție cu this legat