Javascript 使用就地concat有什么缺点吗?

Javascript 使用就地concat有什么缺点吗?,javascript,arrays,implementation,concat,in-place,Javascript,Arrays,Implementation,Concat,In Place,有时我会对Array.prototype.concat的内存需求感到恼火,因为它没有执行到位并返回一个新数组,而不是将参数中传递的数组实际连接到调用实例concat,就像名称在逻辑上暗示的那样 假设与其他库的合作不是问题,那么像这样重新实现它会有任何缺点(性能、长度限制减少等) Array.prototype.concat = function (array) { this.push.apply(this, array); return this; }; 相反,这种替代实现是

有时我会对
Array.prototype.concat
的内存需求感到恼火,因为它没有执行到位并返回一个新数组,而不是将参数中传递的数组实际连接到调用实例
concat
,就像名称在逻辑上暗示的那样

假设与其他库的合作不是问题,那么像这样重新实现它会有任何缺点(性能、长度限制减少等)

Array.prototype.concat = function (array) {
    this.push.apply(this, array);

    return this;
};

相反,这种替代实现是否真的会将辅助内存使用量减少到O(1),或者某种内部机制会将其保持在O(n)?

您来自哪种语言?其中“名称
concat
在逻辑上意味着对参数进行变异”?确实,您已经因为使用
.concat
而耗尽了内存?我简直不敢相信。您的应用程序是什么?至少,您不应该将此新实现命名为
.concat
。与其说是使用,不如说是使用。@Bergi关于你的第二个评论,我不是“内存不足”,而是认为它需要O(n)个辅助内存,因为它实际上创建了前两个数组的副本来构造新数组,在大多数情况下,我只是放弃了对前一个数组的引用,这使得复制只是浪费时间和资源。我们不会称之为“辅助内存”,因为它更像是结果内存。我确信引擎可以很好地优化这一点。通常情况下,您不会受到时间或资源的压力。您来自哪种语言?名称
concat
在逻辑上意味着对参数进行变异?确实,由于使用
.concat
,您的内存已用完?我简直不敢相信。您的应用程序是什么?至少,您不应该将此新实现命名为
.concat
。与其说是使用,不如说是使用。@Bergi关于你的第二个评论,我不是“内存不足”,而是认为它需要O(n)个辅助内存,因为它实际上创建了前两个数组的副本来构造新数组,在大多数情况下,我只是放弃了对前一个数组的引用,这使得复制只是浪费时间和资源。我们不会称之为“辅助内存”,因为它更像是结果内存。我确信引擎可以很好地优化这一点。通常你没有时间或资源压力。