Показать сообщение отдельно
  #1 (permalink)  
Старый 22.05.2011, 18:20
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

Вызов функции с неопределенным количеством аргументов
Возникла необходимость работать с функциями, у которых не определено количество аргументов. Почитал эту статью, все весьма доступно и понятно. Как извлекать пришедшие аргументы я разобрался, и как пользоваться Array-методами в контексте arguments тоже, за что огромное спасибо автору. Однако я столкнулся с проблемой дальнейшего использования полученных значений.

Имеется следующая конструкция:

myMethod(function(a, b, c) {

  // do something

}, 'arg1', 'arg2', 'arg3');


Фактически функция myMethod() принимает в себя неопределенное количество аргументов, среди которых первый - некая анонимная функция, а все последующие являются аргументами, в нее передаваемыми. То есть должно это выглядеть так:

a = 'arg1', b = 'arg2', c = 'arg3'


Сперва я обрабатывают псевдо-массив arguments и вынимаю из него первый элемент:

var fn = Array.prototype.shift.call(arguments);


Затем пытаюсь запустить функцию:

fn(arguments);


В итоге получаю значения [object Arguments], undefined, undefined. То есть аргументы передаются в функцию как есть - в виде массива, а не набора аргументов.

Подскажите пожалуйста возможные пути решения такой задачи.

Последний раз редактировалось DreamTheater, 22.05.2011 в 18:34.
Ответить с цитированием