这些变量紧接在 jQuery source 中定义了 jQuery 的本地副本之后。 .
// Map over jQuery in case of overwrite
_jQuery = window.jQuery
// Map over the $ in case of overwrite
_$ = window.$
可以阅读评论并知道原因...但是
这些代码行是如何做到这一点的?
添加类似的东西会保护我的个人命名空间还是在源代码的更深处?
如果这不是在源代码中,可能会发生什么不好的事情的例子是什么?
最佳答案
如果您查看 jquery.js 文件,您会发现它们首先保存之前的定义(第 31-32 行 v1.4.4):
// Map over the $ in case of overwrite
_$ = window.$,
然后,如果您调用 noConflict
,它只会将值设置回去(第 397-398 行)
noConflict: function( deep ) {
window.$ = _$;
您可以添加类似于您自己的项目的内容来保护 namespace 。这个概念不仅仅适用于 javascript。
如果不包含这些行,那么您将无法在同一页面上运行 jQuery 和 Prototype,因为两者都使用 $
运算符 - 可能不会发生什么坏事,只是您的代码将无法正常工作并可能导致错误。
关于javascript - jQuery 如何保护覆盖 jQuery 和 $,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4465940/