Sobes.tech
Junior

Kako funkcioniše metoda apply u JavaScript-u?

sobes.tech АИ

Одговор од АИ

Metoda apply se poziva na funkcijama i omogućava pozivanje te funkcije sa određenom vrednošću this i argumentima prosleđenim u obliku niza (ili objekta sličnog nizu).

Glavni aspekti:

  1. Postavljanje this: Prvi argument metode apply određuje vrednost ključne reči this unutar pozvane funkcije. Ako prosledite null ili undefined, u nestriktivnom režimu this će se odnositi na globalni objekat (npr. window u pretraživaču ili global u Node.js), a u strikt režimu će ostati undefined.
  2. Prenos argumenata: Drugi argument je niz (ili objekat sličan nizu), čiji će elementi postati argumenti pozvane funkcije, u redosledu u kojem se pojavljuju u nizu.

Sintaksa:

function.apply(thisArg, argsArray)
  • thisArg: Vrednost koja će biti korišćena kao this prilikom poziva funkcije.
  • argsArray: Niz ili objekat sličan nizu koji sadrži argumente sa kojima će funkcija biti pozvana.

Razlike u odnosu na call:

  • apply prihvata argumente kao niz.
  • call prihvata argumente kao odvojene vrednosti, navedene nakon thisArg.

Primer upotrebe:

// Funkcija za računanje maksimalnog broja u nizu
const numbers = [1, 5, 2, 8, 3];
const max = Math.max.apply(null, numbers);
console.log(max); // 8

// Pozivanje metode objekta sa drugim kontekstom `this`
const person1 = { name: 'Alice' };
const person2 = { name: 'Bob' };

function greet(greeting, punctuation) {
  console.log(`${greeting}, ${this.name}${punctuation}`);
}

greet.apply(person1, ['Hello', '!']); // Hello, Alice!
 gree.apply(person2, ['Hi', '?']);    // Hi, Bob?

Upotreba:

  • Prenos niza argumenata funkciji koja ih očekuje kao odvojene parametre.
  • Promena konteksta this prilikom poziva funkcije.
  • Upotreba sa ugrađenim metodama koje očekuju više argumenata (npr. Math.max, Math.min).