Добрый день. Решаю задачку в учебнике:
"Напишите функцию applyAll(func, arg1, arg2...), которая получает функцию func и произвольное количество аргументов. Она должна вызвать func(arg1, arg2...), то есть передать в func все аргументы, начиная со второго, и возвратить результат."
Написал такое решение:
function applyAll() {
var args = [].slice.call(arguments);
var func = args.shift();
return func(args);
};
console.log(applyAll(Math.max, 6,3,4,5));
Оно благополучно не сработало. Правильное выглядит так:
function applyAll() {
var args = [].slice.call(arguments);
var func = args.shift();
return func.apply(this, args);
};
console.log(applyAll(Math.max, 6,3,4,5));
Объясните мне, пожалуйста, зачем в строке "
return func.apply(this, args)
" нужен apply() ? Ведь у меня есть тело функции, есть аргументы. Почему я не могу сделать просто func(args) ? Зачем нужно подставлять контекст? Заранее благодарен.