Sobes.tech
Middle+

Zašto može biti potrebna metoda apply u rešenju runOnce?

sobes.tech АИ

Одговор од АИ

Metoda apply u JavaScript-u omogućava pozivanje funkcije sa zadatim kontekstom (this) i argumentima u obliku niza. U implementaciji runOnce, koja treba da se izvrši samo jednom, apply je koristan za prenos originalnih argumenata i konteksta poziva na obuhvatnu funkciju.

Na primer, ako želimo da runOnce vrati funkciju koja pri prvom pozivu poziva originalnu funkciju sa istim argumentima i kontekstom, a pri sledećim ne, onda apply omogućava da to uradimo univerzalno:

function runOnce(fn) {
  let called = false;
  let result;
  return function(...args) {
    if (!called) {
      called = true;
      result = fn.apply(this, args); // prenos konteksta i argumenata
    }
    return result;
  };
}

Na ovaj način, apply obezbeđuje ispravno funkcionisanje funkcije sa bilo kojim brojem argumenata i ispravnim kontekstom poziva.