Блог → 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), а второй - это как раз массив параметров, которые будут переданы в функциу. Вот этой особенностью мы и воспользовались.


Комментарии (0)

У этого поста еще нет комментариев. Ты можешь быть первым.


Оставить свой комментарий


Представтесь, пожалуйста *

Ваш комментарий

Число на картинке *

captcha

На хостинг