一尘不染

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

javascript

我在页面上添加了一个简单的.js文件,该文件在ObjectArray原型中添加了一些非常普通的常见任务功能。

经过反复试验,我发现向,添加任何函数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破坏这段代码?


阅读 219

收藏
2020-05-01

共1个答案

一尘不染

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

所以:

Object.defineProperty(Object.prototype, "foo", { 
    value: function() {
        // do stuff
    },
    enumerable : false
});

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

2020-05-01