我想扩展Object.prototype,基本上通过UI框架支持JSON数据和html元素中的通知。什么是扩展Object.prototype的陷阱?
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请求也调用原型方法(因为它们引用了用于事件处理的函数)。
这是什么其他副作用?我知道它(obj中的var x)失败,但大多数情况下我们可以使用obj.hasOwnProperty,这应该有帮助吗?
为什么jQuery作者决定不调用.hasOwnProperty,具体原因是什么?它肯定会尝试调用我的事件处理程序并通知更改,但是我确实通过检查参数来获得解决方法。 –