最佳答案
每个 JS 意见领袖都说,扩展本机对象是一种糟糕的做法。但是为什么呢?我们的表现如何?他们是否担心有人做了“错误的方式”,并添加可枚举类型到 Object
,实际上破坏了任何对象上的所有循环?
以 TJ · 霍洛韦查克的 应该 JS为例,他从 添加一个简单的 getter 函数到 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);
是否有反对扩展本机类型的理由?