函数中的 arguments 是个类数组,除了有实参所组成的类似数组以外,还有自己的属性,如 callee

那么在某些场景下,我们需要只需要把 arguments 中的参数列表全部或者部分提取出来,其它的属性则不需要,这该怎么做呢?有下列几种方法:

方法一

1
2
3
4
function somefunc() {
var argsArr = Array.prototype.slice.apply(arguments);
// ...
}

方法二

1
2
3
4
5
function somefunc() {
var argsArr = []
argsArr = Array.prototype.slice.concat(argsArr, arguments);
// ...
}

方法三

灵感来源:

1
2
var arr = Array(1, 2, 3, 4, 5);
console.log(arr); // [1,2,3,4,5]

实现:

1
2
3
4
5
function somefunc() {
var argsArr = []
argsArr = Array.apply(argsArr, arguments);
// ...
}