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

Jef*_*rey 7 javascript arrays arguments slice

为什么将切片方法应用于javascript arguments值如下Array.prototype.slice.call(arguments)将其转换为数组?如果slice在数组上使用,而arguments不是数组,那么这是如何工作的?是否只是slice应用于参数的特殊情况?

Ber*_*rgi 5

EcmaScript规范Array.prototype.slice:

注意slice功能是有意通用的; 它不要求它的this值是一个Array对象.因此,它可以转移到其他类型的对象以用作方法.slice函数是否可以成功应用于宿主对象取决于实现.

因此,slice适用于具有length属性的每个对象(如Arguments对象).即使对于那些不这样做的人,它只返回一个空数组.