Расширение прототипа Array в JavaScript

Мне часто приходилось делать определенные операции для всех элементов в массиве, и мне хотелось, чтобы у JavaScript было что-то вроде С# LINQ. Итак, с этой целью я взломал некоторые расширения прототипа Array:

var data = [1, 2, 3];
Array.prototype.sum = function () {
    var total = 0;
    for (var i = 0; i < this.length; i++) {
        total += this[i];
    }
    return total;
};
Array.prototype.first = function () {
    return this[0];
};
Array.prototype.last = function () {
    return this[this.length - 1];
};
Array.prototype.average = function () {
    return this.sum() / this.length;
};
Array.prototype.range = function () {
    var self = this.sort();
    return {
        min: self[0],
        max: self[this.length-1]
    }
};
console.log(data.sum()) <-- 6

Это упрощает работу с массивами, если вам нужно выполнить некоторую математическую обработку. Есть ли какие-либо слова совета против использования такого шаблона? Полагаю, я должен, вероятно, создать свой собственный тип, который наследуется от прототипа Array, но кроме этого, если в этих массивах будут только цифры, это идея OK?

Ответ 1

Вообще говоря вам следует избегать расширения базовых объектов, поскольку он может столкнуться с другими расширениями этого объекта. Идеальное расширение массива, а затем модификация THAT - это самый безопасный способ сделать что-то, потому что он не может столкнуться с другими разработчиками, которые могут попытаться сделать то же самое (хотя они и не должны).

В принципе, избегайте расширения базовых объектов, когда это возможно, потому что это может вызвать у вас проблемы с очень небольшим реальным преимуществом по сравнению с расширением объекта массива.