Зачем тут используется apply?

В JavaScript метод apply() используется для вызова функции с заданным значением this, а также с массивом аргументов. Этот метод очень полезен в ситуациях, когда у вас есть массив значений, которые вы хотите передать в функцию в качестве аргументов.

Преимущества использования метода apply():

1. **Установка значения this**: При использовании метода apply() вы можете явно указать, какое значение должно быть this внутри вызываемой функции. Это может быть полезно при работе с методами объекта или при использовании конструкторов.

2. **Передача аргументов в виде массива**: В отличие от метода call(), который принимает аргументы как обычные перечисленные значения, метод apply() позволяет передавать аргументы в виде массива. Это удобно, когда у вас есть массив значений, которые нужно передать в функцию.

Пример использования метода apply():

function sum(a, b) {
    return a + b;
}

var arguments = [2, 3];

// Используем apply для передачи массива в качестве аргументов функции sum
var result = sum.apply(null, arguments);

console.log(result); // 5

В приведенном выше примере мы передали массив [2, 3] в функцию sum с использованием метода apply(), что позволило нам получить результат сложения чисел 2 и 3.

Таким образом, метод apply() является полезным инструментом в JavaScript для управления контекстом this и передачи аргументов в функции.