Sobes.tech
Middle

Czym są metody call, apply i bind w JavaScript?

sobes.tech AI

Odpowiedź od AI

call, apply i bind to metody dostępne dla wszystkich funkcji w JavaScript. Służą do zarządzania kontekstem wykonania funkcji (wartością this).

  • call: Wywołuje funkcję z określoną wartością this i oddzielnymi argumentami.
    // Przykład użycia call
    function greet() {
      return "Cześć, " + this.name + "!";
    }
    
    const person = { name: "Ivan" };
    
    console.log(greet.call(person)); // Wynik: Cześć, Ivan!
    
  • apply: Wywołuje funkcję z określoną wartością this i argumentami przekazanymi jako tablica lub pseudo-tablica.
    // Przykład użycia apply
    function sum(a, b) {
      return this.base + a + b;
    }
    
    const context = { base: 10 };
    const numbers = [5, 3];
    
    console.log(sum.apply(context, numbers)); // Wynik: 18
    
  • bind: Tworzy nową funkcję, która po wywołaniu ma ustawioną wartość this. Oryginalna funkcja nie jest wywoływana od razu.
    // Przykład użycia bind
    const module = {
      x: 42,
      getX: function() {
        return this.x;
      }
    };
    
    const unboundGetX = module.getX;
    console.log(unboundGetX()); // Wynik: undefined (this wskazuje na obiekt globalny)
    
    const boundGetX = unboundGetX.bind(module);
    console.log(boundGetX()); // Wynik: 42 (this jest związane z module)
    

Główne różnice:

Metoda Przekazywanie argumentów Wywołanie funkcji Wartość zwracana
call Oddzielnie (przez przecinek) Natychmiastowe Wynik funkcji
apply W postaci tablicy lub pseudo-tablicy Natychmiastowe Wynik funkcji
bind Oddzielnie (przez przecinek) Nie od razu Nowa funkcja z związanym this