经常看到如下代码:
代码语言: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 的指向