我在使用 jQuery 和本机 JavaScript 时遇到问题(NOT原型.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,但是nativeJS 对象原型。
您可以通过将原生原型的扩展设置为不可枚举来避免这些问题:
Object.defineProperty(Object.prototype, 'myVeryGreatFunction',{
value : function() {},
enumerable : false
});
Object.defineProperty
文档关于MDN
正如 Jan Dvorak 提到的,该解决方案不适用于旧浏览器(IE8-)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)