Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое apply в JavaScript?
apply — это встроенный метод, который позволяет вызвать функцию с определённым контекстом (this) и массивом аргументов. Это один из трёх способов управления контекстом выполнения функции, наряду с call и bind.
Основной синтаксис
function.apply(thisArg, [arg1, arg2, arg3])
где:
thisArg— значение, которое будет использовано какthisпри вызове функции- аргументы — массив или array-like объект параметров функции
Практические примеры
Пример 1: Применение функции с другим контекстом
const person = {
name: 'Иван',
greet: function(greeting, punctuation) {
return greeting + ', ' + this.name + punctuation;
}
};
const anotherPerson = { name: 'Мария' };
// Используем apply для вызова greet с контекстом anotherPerson
console.log(person.greet.apply(anotherPerson, ['Привет', '!']));
// Результат: "Привет, Мария!"
Пример 2: Поиск максимального значения в массиве
const numbers = [5, 23, 12, 3, 99, 7];
const max = Math.max.apply(null, numbers);
console.log(max); // 99
Пример 3: Копирование методов между объектами
const logger = {
prefix: '[LOG]',
log: function(message) {
console.log(this.prefix + ' ' + message);
}
};
const errorLogger = { prefix: '[ERROR]' };
// Вызываем метод logger с контекстом errorLogger
logger.log.apply(errorLogger, ['Ошибка при загрузке!']);
// Результат: "[ERROR] Ошибка при загрузке!"
Отличие от call
apply и call делают почти одно и то же, но различаются в передаче аргументов:
// call — аргументы передаются по одному
func.call(thisArg, arg1, arg2, arg3);
// apply — аргументы передаются массивом
func.apply(thisArg, [arg1, arg2, arg3]);
Современный способ: spread operator
В современном JavaScript часто используют spread оператор вместо apply:
// Старый способ
Math.max.apply(null, [5, 23, 12]);
// Новый способ (ES6+)
Math.max(...[5, 23, 12]);
Когда использовать apply?
- При работе с legacy кодом
- Когда нужно передать аргументы из массива в функцию
- Для реализации декораторов и middleware паттернов
- Когда нужно заимствовать методы из других объектов
Понимание apply критично для работы с контекстом, замыканиями и функциональным программированием в JavaScript.