4

我已经看到用于替换串联的 Array 的 push 方法,但我不完全确定它是如何工作的。

var a = [1,2,3];
var b = [4,5,6];
Array.prototype.push.apply(a,b);

这如何连接到位而不是返回一个新数组?

4

2 回答 2

15

.apply()接受两个参数:

fun.apply(thisArg[, argsArray])

a作为你的this对象和b你的参数列表传递,所以你的代码实际上是用你的参数调用.push()的元素b

var a = [1, 2, 3];
a.push(4, 5, 6);

现在,.push()只需改变您的原始数组。

于 2012-12-26T22:38:28.663 回答
4

使用this. 要尝试描述它,请参阅这个 customPush 函数。

function customPush() {
    var i = 0,
        len = arguments.length;

    for(; i < len; i++) {
        this[this.length] = arguments[i];
    }
};


var a = [1,2,3];
var b = [4,5,6];
customPush.apply(a,b);
于 2012-12-26T22:40:19.060 回答