javascript - 分配 Object.prototype 会导致 jQuery 出现问题

标签 javascript

我正在尝试为 Object.prototype.equals 分配一个函数,类似于 Object comparison in JavaScript 中所做的.该函数运行完美,但每当我使用 jQuery 时,我都会收到如下错误:

name.replace is not a function

引用jquery-1.6.1.js中的6490行

有谁知道为什么会这样?

最佳答案

不要猴子修补 Object.prototype

Object.prototype.replace = "lol";

for (var i in { "bar": 42 }) {
  alert(i);
}
// "bar"
// "replace" :(

基本上 for ... in 循环遍历对象中的所有属性包括在原型(prototype)上定义的属性。这就是为什么扩展或更改 Object.prototype 是非常糟糕的做法。

有些人甚至达到了“不要猴子修补 ArrayStringFunction,...”。

你不应该永远弄乱Object.prototype。 native 原型(prototype)的其余部分是样式选择。

Object 上定义您的函数。

Object.replace = function() { ... };

var o = Object.replace(p);

ES5:

使用 ecmascript 5,您可以将属性设置为不可枚举

Object.defineProperty(Object.prototype, "replace", {
  value: function() { }
});

关于javascript - 分配 Object.prototype 会导致 jQuery 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6332480/

相关文章:

javascript - 需要折射的 ReactJs 函数(如果可能)

javascript - if 语句不适用于计数器变量

javascript - 如何不让网站阻止您的 iframe?

javascript - 使用 javascript 将链接图像添加到 html 正文

javascript - Parse.com SendGrid 云模块 : Cannot send header param object

javascript - Dart 互操作 : How correctly to make a wrapper?

javascript - graphql 将动态数据传递给突变

Javascript onError 无法正常工作

javascript - 如果 requireJS 模块在 $ 上设置了全局变量,那么如何仅在分配了全局变量后才执行模块代码?

javascript - Canvas 上 View 外的对象会消耗内存吗?