jQuery与本机原型冲突

朱利安·温纳特(Julian F.Weinert)

我在将jQuery与本机JavaScript一起使用时遇到问题(不是prototype.js)。使用以下代码时,带有错误消息的jQuery 1.9.1:

Object.prototype.myVeryGreatFunction = function() {
    // ...
}

[Error] TypeError: undefined is not a function (evaluating 'U[a].exec(s)')
ft (jquery.min.js, line 4)
wt (jquery.min.js, line 4)
st (jquery.min.js, line 4)
find (jquery.min.js, line 4)
init (jquery.min.js, line 3)
b (jquery.min.js, line 3)
(anonymous function) (read.control.js, line 59)
c (jquery.min.js, line 3)
fireWith (jquery.min.js, line 3)
ready (jquery.min.js, line 3)
H (jquery.min.js, line 3)

当我删除原型定义时,一切正常。不幸的是,我无法轻松更新jQuery,因为它在CMS插件中,因此出于兼容性原因,它必须与旧版本一起使用。

有任何已知问题或解决方法吗?

谷歌搜索实际上向我展示了使用jQuery.noConflict()和私有函数包装之类的解决方案但是如上所述,我不是在使用prototype.js,而是在使用本地JS对象原型。

蒂博斯

通过将对本机原型的扩展设为不可枚举,可以避免这些问题:

Object.defineProperty(Object.prototype, 'myVeryGreatFunction',{
  value : function() {},
  enumerable : false
});

Object.defineProperty有关MDN的文档

正如Jan Dvorak所述,此解决方案不适用于旧浏览器(IE8-)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章