なぜネイティブオブジェクトの拡張が悪い習慣なのですか?
すべてのJSオピニオンリーダーは、ネイティブオブジェクトを拡張することは悪い習慣だと言っています。しかし、なぜ?パフォーマンスに影響はありますか?彼らは誰かがそれを「間違った方法」で行うことを恐れて、列挙可能な型をObjectに追加し、実際に任意のオブジェクトのすべてのループを破壊しますか? テイクTJ Holowaychukのshould.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); ネイティブ型の拡張に反対する議論はありますか?