Читаю про ES-2015 на http://learn.javascript.ru, в частности использование spread. Приведен такой пример:
'use strict';
let numbers = [2, 3, 15];
let max = Math.max(...numbers);
alert( max ); // 15
а ниже указано, что
Math.max(...numbers);
Math.max.apply(Math, numbers);
делают одно и то же.
Сам пример мне понятен, но что за конструкция приведена здесь:
Math.max.apply(Math, numbers);
???
Что за метод apply?
apply позволяет вызывать функцию/метод в контексте другого объекта
const obj = {
name: 'obj',
method: function () {
alert(this.name);
}
}
obj.method(); // выведет obj
obj.method.apply({name: 'obj2'}); // выведет obj2
Подробнее
P.S.
apply не совсем аналог spread-оператору. Просто Math.max принимает список параметров, в который разворачивается массив spread-оператором.
let numbers = [2, 3, 15];
let max = Math.max(...numbers);
// то же самое что и
Math.max(2, 3, 15);
apply же вторым параметром принимает массив, которые будет передан как аргументы в функцию
const fn = (a, b) => a + b
fn.apply(null, [1, 2]); // null потому что нам не нужен тут контекст
Сборка персонального компьютера от Artline: умный выбор для современных пользователей