Ответ
Добавление методов в Array.prototype
может привести к неожиданным побочным эффектам:
- Конфликты имен: если в будущем в стандарт добавится метод с таким же именем, поведение сломается.
- Итерации: добавленные свойства будут видны в
for..in
(хотя для массивовfor..in
не рекомендуется). - Совместимость: код может сломаться в других библиотеках или фреймворках.
Лучше использовать отдельные утилиты или классы-обертки.
Пример проблемы:
Array.prototype.sum = function() {
return this.reduce((a, b) => a + b, 0);
};
const arr = [1, 2, 3];
for (const key in arr) {
console.log(key); // Выведет: 0, 1, 2, "sum"
}
Решение:
function sum(array) {
return array.reduce((a, b) => a + b, 0);
}