为什么将切片方法应用于javascriptarguments
值如下Array.prototype.slice.call(arguments)
将其转换为数组?如果 slice 用于数组,而arguments
不是数组,那么它是如何工作的?slice
应用于参数时是否只是一种特殊情况?
问问题
1036 次
2 回答
5
来自EcmaScript 规范Array.prototype.slice
:
注意该
slice
函数是故意通用的;它不要求它的this
值是一个 Array 对象。因此,它可以转移到其他类型的对象中用作方法。函数能否slice
成功应用于宿主对象取决于实现。
因此,slice
适用于每个具有length
属性的对象(如Arguments
对象)。即使对于那些不这样做的人,它也会返回一个空数组。
于 2013-01-14T21:58:04.803 回答
3
是的,这是一个利用参数是可枚举列表这一事实的技巧。它也适用于其他可枚举列表(例如节点列表)。
于 2013-01-14T21:52:44.517 回答