查找有关执行以下操作时究竟发生了什么的详细信息:
function useArray(){
var args = [].slice.call(arguments)
console.log(args)
}
slice
如何成为具有3个参数(源数组,要复制的起始位置和结束位置)威胁arguments
的函数?方法call
需要将第一个参数的正确值设为this
,但似乎arguments
变为Array对象?
为什么这不起作用:
var args = [].slice(arguments)
答案 0 :(得分:1)
我们正在使用[].slice
来获取Array::slice
方法。 arguments
没有自己的slice()
,但 类似于数组。
虽然它是Array
的成员,但slice()
在类似数组的对象上运行良好 - 具有.length
且可以使用{{1}编入索引的内容}。
[0..n]
会返回整个数组的副本。它的论点都是可选的。
好像slice()
一个arguments
方法,我们调用slice()
来获取它的副本(作为数组) )。
arguments.slice()
只是在一个空数组上调用[].slice(arguments)
,Array::slice()
作为arguments
参数,因为begin
(如果存在),这是没有意义的应该是一个数字。