2013-10-14 3 views
0
function list() { 
    return Array.prototype.slice.call(arguments, 0); //Here is my problem 
} 

var list1 = list(1, 2, 3); // [1, 2, 3] 

Я нашел этот пример использования функции среза в сети и хотел бы, чтобы какая-то помощь поняла, как функция call() может получить доступ к каждому элементу, который передается в список, используя свойство «arguments».Как эта функция может возвращать один объект?

Я не понимаю, как передается одиночное свойство «arguments», поскольку контекст функции для slice() работает. Я пропустил какую-то рекурсию там где-то?

+0

http://stackoverflow.com/questions/7056925/how-does-array-prototype-slice-call-work – lastr2d2

ответ

0

Функция превращает предоставленный аргумент в массив.

Когда вызывается метод вызова функции, то этот в функции установлен на предоставленный объект. Другой способ назвать это:

[].slice.call(arguments); 

так внутри метода среза, это не массив empyt в начале выражения, но аргументы объекта.

Это не очень хорошая идея, если переданный объект не является родным объектом (например, объектом DOM, например NodeList или аналогичным), поскольку он не работает в некоторых используемых браузерах. Кроме того, этот не является «контекстом», это просто один из параметров контекста выполнения функции.

Смежные вопросы