为什么数组切片会将JavaScript参数转换为数组

7
为什么将JavaScript中的arguments值应用于片段方法,如下所示Array.prototype.slice.call(arguments)会将其转换为数组?如果对数组使用片段,则arguments不是数组,那么这是如何工作的?当应用slicearguments时,只是一个特例吗?

1
嗯,为什么转换不是参数对象的一个特性,而是切片呢? - Michael Paulukonis
可能是 how does Array.prototype.slice.call() work? 的重复问题。 - Bergi
2个回答

5
根据EcmaScript关于Array.prototype.slice的规范
注意:slice函数是有意通用的;它不需要其this值为Array对象。因此,它可以被传输到其他类型的对象中以供使用作为方法。无论slice函数是否能成功应用于主机对象都取决于实现。
因此,slice适用于每个具有length属性的对象(例如Arguments对象)。即使对于那些没有length属性的对象,slice也只会返回一个空数组。

3

这是一种利用参数是可枚举列表的技巧。它也适用于其他可枚举列表(例如nodelist)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接