Расширение прототипа 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 - это самый безопасный способ сделать что-то, потому что он не может столкнуться с другими разработчиками, которые могут попытаться сделать то же самое (хотя они и не должны).
В принципе, избегайте расширения базовых объектов, когда это возможно, потому что это может вызвать у вас проблемы с очень небольшим реальным преимуществом по сравнению с расширением объекта массива.