我正在尝试为Object.prototype.equals分配一个函数,类似于在JavaScript中的Object比较中所做的.该函数运行正常,但每当我有jQuery时,我会得到如下错误:
name.replace不是一个函数
参考jquery-1.6.1.js中的第6490行.
有谁知道为什么会发生这种情况?
不要猴子补丁Object.prototype.
Object.prototype.replace = "lol";
for (var i in { "bar": 42 }) {
alert(i);
}
// "bar"
// "replace" :(
Run Code Online (Sandbox Code Playgroud)
基本上,for ... in循环遍历对象中的所有属性,包括原型上定义的属性.这就是为什么扩展或改变真的很糟糕的原因Object.prototype.
有些人还去尽量"不要猴子补丁Array,String,Function,...".
你永远不应该搞砸了Object.prototype.其余的原生原型是一种风格选择.
定义你的功能Object.
Object.replace = function() { ... };
var o = Object.replace(p);
Run Code Online (Sandbox Code Playgroud)
ES5:
使用ecmascript 5,您可以将属性设置为不可枚举
Object.defineProperty(Object.prototype, "replace", {
value: function() { }
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
655 次 |
| 最近记录: |