为什么扩展本机对象是一种不好的做法?
每个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); 是否有反对扩展本机类型的论点?