这两段代码有什么区别? (JavaScript的)

时间:2016-01-16 00:03:58

标签: javascript arrays apply

我试图找出以下两段代码之间的区别。他们既压扁了一系列子阵列又输出了相同的东西。

Array.prototype.concatAll = function() {
    var results = [];
    this.forEach(function(subArray) {
        results.push.apply(results, subArray);
    });

    return results;
}; // [ [1,2,3], [4,5,6], [7,8,9] ] -> [1, 2, 3, 4, 5, 6, 7, 8, 9]

results

如何运作?为什么"pizza,magic,dogs,hype" 必须写两次?

1 个答案:

答案 0 :(得分:1)

apply是一个函数方法,允许传递显式this参数(可能与函数所属的对象不同)和参数数组。在您的示例中,apply用于接受参数数组,以替代spread operator