【发布时间】:2012-01-10 14:02:15
【问题描述】:
我想扩展 Object.prototype,通过 UI 框架基本支持 JSON 数据和 html 元素中的通知。
Object.prototype.setValue = function(key,value){
// this simply sets value as this[key] = value
// and raises an event
Binder.setValue(this,key,value);
};
Object.prototype.getValue = function(key){
return Binder.getValue(this,key);
};
然而,基于这个问题,Extending Object.prototype JavaScript 和其他一些人,人们说我们应该避免扩展 Object.prototype,而是任何其他类型都可以。
如果我不这样做,那么我的代码就会变大,例如
window.myModel.setValue("currentStatus","empty");
必须写成,
Binder.setValue(window.myModel,"currentStatus","empty");
我想知道如果我使用这些方法会出现什么问题?它会导致 jQuery 出现意外行为吗?我曾经见过,jQuery 的 ajax 请求也会调用原型方法(因为它们引用了用于事件处理的函数)。
这还有什么其他副作用?我知道 for(var x in obj) 失败了,但大多数情况下我们可以使用 obj.hasOwnProperty,这应该有帮助吧?
【问题讨论】:
标签: javascript object prototype-programming