为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript中的原型对象破坏了jQuery?

Javascript中的原型对象破坏了jQuery?

阿晨1998 2019-11-18 14:22:39
我在页面上添加了一个简单的.js文件,该文件在Object和Array原型中添加了一些非常普通的常见任务功能。经过反复试验,我发现向,添加任何函数Object.prototype,无论其名称或功能如何都会导致jQuery中的Javascript错误:罪魁祸首?Object.prototype.foo = function() {    /*do nothing and break jQuery*/};我jquery-1.3.2.js在attr:function {}声明中得到的第1056行的错误:/*Object doesn't support this property or method*/name = name.replace(/-([a-z])/ig, function(all, letter) {            return letter.toUpperCase();        });显然G.replace是未定义的。很明显,有些事情我只是没有用原型制作而已,但我很痛苦地未能弄清楚它是什么。明确地说,我不是在寻找解决方法,而是已经解决了……我在寻找的是对“ 为什么”的答案。。为什么添加一个函数来Object.prototype破坏这段代码?
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

你永远不应该扩展Object.prototype。它所做的远不止打破jQuery。它完全破坏了Javascript的“对象作为哈希表”功能。不要这样



查看完整回答
反对 回复 2019-11-18
?
慕斯王

TA贡献1864条经验 获得超2个赞

如果仅是在循环中弄乱...的情况,您是否可以使用Object.defineProperty来添加fn而不使其成为可枚举的?


所以:


Object.defineProperty(Object.prototype, "foo", { 

    value: function() {

        // do stuff

    },

    enumerable : false

});

似乎为我工作。还是会认为这是错误的形式?


查看完整回答
反对 回复 2019-11-18
  • 3 回答
  • 0 关注
  • 451 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信