JS'参数'对象如何转换为数组

时间:2015-10-28 02:42:42

标签: javascript arrays function arguments

查找有关执行以下操作时究竟发生了什么的详细信息:

    function useArray(){
        var args = [].slice.call(arguments)
        console.log(args)
    }

slice如何成为具有3个参数(源数组,要复制的起始位置和结束位置)威胁arguments的函数?方法call需要将第一个参数的正确值设为this,但似乎arguments变为Array对象?

为什么这不起作用:

var args = [].slice(arguments)

1 个答案:

答案 0 :(得分:1)

我们正在使用[].slice来获取Array::slice方法。 arguments没有自己的slice(),但 类似于数组。

虽然它是Array的成员,但slice()在类似数组的对象上运行良好 - 具有.length且可以使用{{1}编入索引的内容}。

没有参数的

[0..n]会返回整个数组的副本。它的论点都是可选的。

好像slice() 一个arguments方法,我们调用slice()来获取它的副本(作为数组) )。

arguments.slice()只是在一个空数组上调用[].slice(arguments)Array::slice()作为arguments参数,因为begin(如果存在),这是没有意义的应该是一个数字。