почему Array slice преобразует аргументы javascript в array
Почему применение метода slice к javascript arguments
значение следующим образом Array.prototype.slice.call(arguments)
преобразовать его в массив? Если slice используется на массивах, и arguments
не является массивом, тогда как это работает? Это просто особый случай, когда slice
применяется к аргументам?
2 ответов
С спецификация EcmaScript на Array.prototype.slice
:
Примечание на
slice
функция намеренно универсальна; она не требует, чтобы ееthis
значение-объект массива. Поэтому его можно перенести к другим видам объектов для пользы как метод. Лиslice
функция может быть успешно применена к объекту хоста, зависящему от реализации.
и так, slice
работает на каждом объекте, который имеет length
свойство (например,Arguments
объекты). И даже для тех, кто этого не делает, он просто возвращает пустой массив.
правильно, это трюк, который использует тот факт, что аргументы являются перечислимым списком. Он также работает с другими перечислимыми списками (например, nodelists).