JS 'arguments' 对象如何转换为数组
How JS 'arguments' object gets converted to array
正在寻找有关执行以下操作时究竟发生了什么的更多详细信息:
function useArray(){
var args = [].slice.call(arguments)
console.log(args)
}
为什么 slice
是一个具有 3 个参数(源数组、要复制的开始和结束位置)的函数会威胁 arguments
正确?方法 call
需要第一个参数的正确值作为 this
但似乎 arguments
变成了 Array 对象?
为什么这不起作用:
var args = [].slice(arguments)
我们正在使用 [].slice
获取 Array::slice
方法。 arguments
没有自己的 slice()
,但它 是 类数组。
虽然它是 Array
的成员,但 slice()
在类似数组的对象上工作得很好 -- 具有 .length
并且可以用 [0..n]
索引的对象.
slice()
不带参数 returns 整个数组的副本。它的参数都是可选的。
所以就好像 arguments
有 一个 slice()
方法,我们调用 arguments.slice()
来获取它的一个副本(作为数组).
[].slice(arguments)
只是在空数组上调用 Array::slice()
,arguments
作为 begin
参数,这没有意义,因为 begin
(如果present) 应该是一个数字。
正在寻找有关执行以下操作时究竟发生了什么的更多详细信息:
function useArray(){
var args = [].slice.call(arguments)
console.log(args)
}
为什么 slice
是一个具有 3 个参数(源数组、要复制的开始和结束位置)的函数会威胁 arguments
正确?方法 call
需要第一个参数的正确值作为 this
但似乎 arguments
变成了 Array 对象?
为什么这不起作用:
var args = [].slice(arguments)
我们正在使用 [].slice
获取 Array::slice
方法。 arguments
没有自己的 slice()
,但它 是 类数组。
虽然它是 Array
的成员,但 slice()
在类似数组的对象上工作得很好 -- 具有 .length
并且可以用 [0..n]
索引的对象.
slice()
不带参数 returns 整个数组的副本。它的参数都是可选的。
所以就好像 arguments
有 一个 slice()
方法,我们调用 arguments.slice()
来获取它的一个副本(作为数组).
[].slice(arguments)
只是在空数组上调用 Array::slice()
,arguments
作为 begin
参数,这没有意义,因为 begin
(如果present) 应该是一个数字。