Почему расширение нативных объектов - плохая практика?

Каждый лидер общественного мнения говорит, что расширение нативных объектов - плохая практика. Но почему? Мы получаем хит производительности? Боятся ли они, что это кто-то делает?неправильный путь"и добавляет перечислимые типы вObject, практически уничтожая все петли на любом объекте?

приниматьTJ Holowaychuk'sshould.js например. Ондобавляет простой получатель вObject и все отлично работает (источник).

Object.defineProperty(Object.prototype, 'should', {
  set: function(){},
  get: function(){
    return new Assertion(Object(this).valueOf());
  },
  configurable: true
});

Это действительно имеет смысл. Например, можно продлить.Array

Array.defineProperty(Array.prototype, "remove", {
  set: function(){},
  get: function(){
    return removeArrayElement.bind(this);
  }
});
var arr = [0, 1, 2, 3, 4];
arr.remove(3);

Есть ли аргументы против расширения нативных типов?

Ответы на вопрос(7)

Ваш ответ на вопрос