为什么数组切片将javascript参数转换为数组

why does array slice convert javascript arguments to array

本文关键字:数组 转换 参数 切片 为什么 javascript      更新时间:2023-09-26

为什么将切片方法应用于javascript arguments值,如下Array.prototype.slice.call(arguments)将其转换为数组?如果切片是在阵列上使用,而arguments不是一个阵列,那么这是如何工作的?当slice应用于论证时,它只是一个特例吗?

来自Array.prototype.slice上的EcmaScript规范:

注意 slice函数故意是通用的;它不要求它的this值是一个Array对象。因此,它可以作为一种方法转移到其他类型的对象中使用。slice函数能否成功应用于主机对象取决于具体实现。

因此,slice适用于所有具有length属性的对象(如Arguments对象)。即使没有,它也会返回一个空数组。

对,这是一个利用参数是可枚举列表这一事实的技巧。它也适用于其他可枚举列表(例如节点列表)。