Почему расширение нативных объектов - плохая практика?
Каждый лидер общественного мнения говорит, что расширение нативных объектов - плохая практика. Но почему? Мы получаем хит производительности? Боятся ли они, что это кто-то делает?неправильный путь"и добавляет перечислимые типы в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);
Есть ли аргументы против расширения нативных типов?