Блог → Javascript: необычное применение apply
Сегодня я хочу рассказать об одном необычном способе применения apply в javascript.
Предположим у нас есть некоторая функция:
function sum(){
for (var i=0, s=0; i<arguments.length; s+=arguments[i++]);
return s;
}
Эта функция принимает динамическое число параметров и возвращает их сумму.
alert(sum(1,2,3,4,5,10)); //выведет 25
А теперь, представим ситуацию, когда список параметров, которые мы должны передать в функцию формируется в результате выполнения скрипта (например в виде массива), и также нет возможности изменить код функции (например мы пользуемся каким либо фрэймворком). Возникает вопрос. Как быть? Как передать массив параметров в нашу функцию?
Вот тут, как нельзя кстати, нам пригодится apply. Смотрите:
var test = [1,7,2,20];
alert(sum.apply(null, test)); //выведет 30
Почему этот код работает? Как известно у функций в javascript существует метод apply. Он принимает два параметра. Первый - это объект, в контексте которого будет вызвана функция (здесь мы передаем null), а второй - это как раз массив параметров, которые будут переданы в функциу. Вот этой особенностью мы и воспользовались.