Что делает метод apply ?

Спросят с вероятностью 7%



Метод apply позволяет вызвать функцию с определённым значением this и передать аргументы в виде массива (или массивоподобного объекта). Он является частью прототипа функции и используется для управления контекстом выполнения функции и передачи аргументов.



Зачем он нужен




Метод apply полезен в ситуациях, когда:

1️⃣Нужно вызвать функцию с конкретным значением this.

2️⃣Необходимо передать аргументы в виде массива, особенно когда их количество заранее неизвестно.



Как он используется



Синтаксис метода apply выглядит так:

function.apply(thisArg, [argsArray])




thisArg: Значение, используемое для this при вызове функции.

argsArray: Массив или массивоподобный объект, содержащий аргументы для функции.



Пример

function greet(greeting, punctuation) {

console.log(greeting + ', ' + this.name + punctuation);

}



const person = { name: 'Alice' };



greet.apply(person, ['Hello', '!']); // Вывод: "Hello, Alice!"




В этом примере:

Функция greet принимает два аргумента и использует this.name.

Метод apply вызывает greet с this, указывающим на объект person, и передает массив аргументов ['Hello', '!'].



Зачем использовать apply вместо других методов



Особенно удобен, когда аргументы уже находятся в массиве. Если бы использовался метод call, пришлось бы передавать аргументы вручную:

greet.call(person, 'Hello', '!'); // То же самое, но аргументы передаются по отдельности




Еще один пример: использование с встроенными методами



Метод apply можно использовать для передачи массивов встроенным функциям, которые не работают напрямую с массивами. Например, использование метода Math.max для нахождения максимального значения в массиве:

const numbers = [5, 6, 2, 3, 7];

const max = Math.max.apply(null, numbers); // 7




Здесь:

Math.max ожидает список отдельных чисел, а не массив.

apply передает массив как набор отдельных аргументов.



Метод apply вызывает функцию с определённым значением this и аргументами в виде массива. Это удобно, когда аргументы уже находятся в массиве и нужно управлять контекстом выполнения функции.



👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент



🔐 База собесов | 🔐 База тестовых