Sobes.tech
Junior

Jak działa metoda apply w JavaScript?

sobes.tech AI

Odpowiedź od AI

Metoda apply jest wywoływana na funkcjach i pozwala na wywołanie tej funkcji z określoną wartością this oraz argumentami przekazanymi w formie tablicy (lub obiektu podobnego do tablicy).

Główne aspekty:

  1. Ustawienie this: Pierwszy argument metody apply określa wartość słowa kluczowego this wewnątrz wywoływanej funkcji. Jeśli przekażesz null lub undefined, w trybie nieścisłym this będzie odwoływał się do obiektu globalnego (np. window w przeglądarce lub global w Node.js), a w trybie ścisłym pozostanie undefined.
  2. Przekazywanie argumentów: Drugi argument to tablica (lub obiekt podobny do tablicy), którego elementy staną się argumentami wywoływanej funkcji, w kolejności ich występowania w tablicy.

Składnia:

function.apply(thisArg, argsArray)
  • thisArg: Wartość, która będzie używana jako this podczas wywołania funkcji.
  • argsArray: Tablica lub obiekt podobny do tablicy zawierający argumenty, którymi zostanie wywołana funkcja.

Różnice w stosunku do call:

  • apply przyjmuje argumenty jako tablicę.
  • call przyjmuje argumenty jako oddzielne wartości, wymienione po thisArg.

Przykład użycia:

// Funkcja do obliczania maksymalnej liczby w tablicy
const numbers = [1, 5, 2, 8, 3];
const max = Math.max.apply(null, numbers);
console.log(max); // 8

// Wywołanie metody obiektu z innym kontekstem `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?

Zastosowania:

  • Przekazywanie tablicy argumentów do funkcji, która oczekuje ich jako oddzielnych parametrów.
  • Zmiana kontekstu this podczas wywołania funkcji.
  • Użycie z wbudowanymi metodami, które oczekują wielu argumentów (np. Math.max, Math.min).