Встречается на собеседованиях • сегодня

Почему нельзя вешать на Array.prototype дополнительный обработчик или функцию

Добавление методов в Array.prototype может привести к неожиданным побочным эффектам:

  1. Конфликты имен: если в будущем в стандарт добавится метод с таким же именем, поведение сломается.
  2. Итерации: добавленные свойства будут видны в for..in (хотя для массивов for..in не рекомендуется).
  3. Совместимость: код может сломаться в других библиотеках или фреймворках.

Лучше использовать отдельные утилиты или классы-обертки.

Пример проблемы:

javascript
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" 
}

Решение:

javascript
function sum(array) {
  return array.reduce((a, b) => a + b, 0);
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы