我不是在问这个是否可以:
Object.prototype.method = function(){};
这被几乎所有人视为“邪恶”,因为它会破坏 for(var i in obj)
。
真正的问题
忽略以下内容:
- 无能的浏览器(不支持
Object.defineProperty
) - 可能发生的属性冲突或覆盖
假设您有一些非常有用的方法,这是否被认为是错误/不道德的?
Object.defineProperty(Object.prototype, 'methodOnSteriods',{
value: function(){ /* */ },
writable: true,
configurable: true,
enumerable: false
});
如果您认为上述行为不道德,那么他们为什么一开始就要实现这个功能呢?
var cards = {forEach:'son'}; cards.forEach(function(){});//world exploids
。而且,你确实会失去enumerable:false
,例如:for(var i in cards)console.log(i);
输出 'forEach'。 - Lime