Есть ли недостатки в использовании concat на месте?

Иногда меня раздражают требования к памяти для Array.prototype.concat, поскольку это не делается на месте и возвращает новый массив вместо фактического объединения массива, переданного в аргументе, с вызываемым экземпляром concat, как логически подразумевает имя.

Предполагая, что сотрудничество с другими библиотеками не является проблемой, будут ли какие-либо недостатки (производительность, уменьшение ограничения длины и т. д.) повторной реализации этого?

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

    return this;
};

И наоборот, будет ли эта альтернативная реализация действительно уменьшать использование вспомогательной памяти до O (1) или какой-то внутренний механизм будет поддерживать его на уровне O (n)?


person Patrick Roberts    schedule 16.07.2015    source источник
comment
Из какого языка вы пришли, где имя concat логически подразумевает изменение аргумента(ов)?   -  person Bergi    schedule 16.07.2015
comment
Действительно, у вас закончилась память из-за использования .concat? Я с трудом могу поверить. Каково ваше приложение?   -  person Bergi    schedule 16.07.2015
comment
По крайней мере, вы не должны называть эту новую реализацию .concat. Вместо этого используйте .append или около того.   -  person Bergi    schedule 16.07.2015
comment
@Bergi Что касается вашего второго комментария, у меня не заканчивается память, а скорее я делаю вывод, что для него требуется вспомогательная память O (n), поскольку он по существу создает копию обоих предыдущих массивов для построения нового массива, и в большинстве случаев используется -cases я просто отбрасываю ссылку на предыдущую, что делает копирование просто пустой тратой времени и ресурсов.   -  person Patrick Roberts    schedule 16.07.2015
comment
Мы бы не назвали это вспомогательной памятью, так как это скорее память результата. И я почти уверен, что двигатели могут оптимизировать это достаточно хорошо. Как правило, вы все равно не ограничены во времени или ресурсах.   -  person Bergi    schedule 16.07.2015
comment
Что касается вашего первого вопроса, мне не кажется интуитивно понятным, что concat не является мутатором. Почему его не должно быть, когда push есть?   -  person Patrick Roberts    schedule 16.07.2015
comment
Возможно, этот ответ поможет понять это.   -  person Bergi    schedule 16.07.2015
comment
@Bergi, хорошо, это справедливо, но это не меняет моего главного вопроса.   -  person Patrick Roberts    schedule 16.07.2015