详解Array.prototype.shift.call(arguments)

2022-07-22 14:51:49 浏览数 (1)

经常看到如下代码:

代码语言:javascript复制
function foo() {
        let k = Array.prototype.shift.call(arguments);
        console.log(k)
}
foo('11','22') //11

Array.prototype.shift.call(arguments)

的作用是: 取 arguments 中的第一个参数

为啥要这么写,不直接使用arguments.shift()呢?

原因就是arguments不是一个真正的数组,而是类数组

arguments是类数组,很多数组中的方法arguments都没有

打印 arguments

打印Array.prototype

可以看到Array.prototype上是有shift()方法

总结 :

因 arguments 没有 shift 方法,故使用 Array.prototype.shift 函数 ,又使用 call 方法来指定shift 中 this 的指向

0 人点赞