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ą
thisi 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ą
thisi 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 |