Sobes.tech
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.