Sobes.tech
Junior

Kaip veikia apply metodas JavaScript'e?

sobes.tech AI

Atsakymas iš AI

apply metodas kviečiamas funkcijose ir leidžia iškviesti tą funkciją su nurodyta this reikšme ir argumentų masyvu (arba masyvu panašiu objektu).

Pagrindiniai aspektai:

  1. this nustatymas: apply metodo pirmasis argumentas nurodo this reikšmę iškviečiamos funkcijos viduje. Jei perduodama null arba undefined, tada negriežtame režime this nuoroda bus į globalųjį objektą (pavyzdžiui, naršyklėje window arba Node.js global), o griežtame režime liks undefined.
  2. Argumentų perdavimas: antrasis argumentas yra masyvas (arba masyvu panašus objektas), kurio elementai taps iškviečiamos funkcijos argumentais, perduodamais jų sekos tvarka.

Sintaksė:

function.apply(thisArg, argsArray)
  • thisArg: reikšmė, kuri bus naudojama kaip this iškviečiant funkciją.
  • argsArray: masyvas arba masyvu panašus objektas, turintis argumentus, kurie bus perduoti funkcijai.

Skirtumai nuo call:

  • apply priima argumentus kaip masyvą.
  • call priima argumentus kaip atskirus reikšmes, išvardytas po thisArg.

Naudojimo pavyzdys:

// Funkcija, skirta rasti didžiausią skaičių masyve
const numbers = [1, 5, 2, 8, 3];
const max = Math.max.apply(null, numbers);
console.log(max); // 8

// Objekto metodo iškvietimas su kitu kontekstu `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!
'greet.apply(person2, ['Hi', '?']);    // Hi, Bob?

Naudojimas:

  • Masyvo argumentų perdavimas funkcijai, kuri jų tikisi kaip atskirus parametrus.
  • this konteksto keitimas funkcijos iškvietimo metu.
  • Naudojimas su įmontuotomis metodais, kurie tikisi daugybės argumentų (pvz., Math.max, Math.min).