Показать сообщение отдельно
  #4 (permalink)  
Старый 23.04.2012, 11:56
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от nerv_
var args = [].slice.call( arguments );
Не лучший вариант, как известно slice вызывает конструктор создания массива, который потом накапливает тем что есть в контексте, в вашем же случае происходит двойной вызов конструктора, один из них просто ненужный:

[] - вызывает конструктор (тот самый ненужный вызов)
.slice - ищет прототип slice в прототипах массива, то-есть глубокий поиск, начиная от экземпляра созданного массива
call(...) - снова вызывает конструктор для наполнения его тем что есть в контексте.

Пример данный Pavel M., намного производительный, так как не требует вызова лишних методов и поиска прототипа рекурсией.
var args = Array.prototype.slice.call(arguments);
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием