Middle+
Dlaczego metoda apply może być potrzebna w rozwiązaniu runOnce?
sobes.tech AI
Odpowiedź od AI
Metoda apply w JavaScript pozwala wywołać funkcję z określonym kontekstem (this) i argumentami w postaci tablicy. W implementacji runOnce, która ma się wykonać tylko raz, apply jest przydatne do przekazania oryginalnych argumentów i kontekstu wywołania do opakowanej funkcji.
Na przykład, jeśli chcemy, aby runOnce zwracała funkcję, która przy pierwszym wywołaniu wywoła funkcję źródłową z tymi samymi argumentami i kontekstem, a przy kolejnych już nie, to apply pozwala to zrobić uniwersalnie:
function runOnce(fn) {
let called = false;
let result;
return function(...args) {
if (!called) {
called = true;
result = fn.apply(this, args); // przekazujemy kontekst i argumenty
}
return result;
};
}
W ten sposób apply zapewnia poprawne działanie funkcji z dowolną liczbą argumentów i właściwym kontekstem wywołania.