YouNoFish
2015-08-23 00:27
Var _jQuery = window.jQuery, _$ = window.$; jQuery.noConflict = function( deep ) { if ( window.$ === jQuery ) { window.$ = _$; } if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; } return jQuery; };
看了半天还是没懂怎么实现把$交出去的。。完全没理解。。。望大神解答具体的流程。。
之前的_$和_jQuery是没有内容的
var // Map over jQuery in case of overwrite _jQuery = window.jQuery, // Map over the $ in case of overwrite _$ = window.$; // 这边是说保存jQuery和$以防被重写覆盖了,这些代码是jq引入时自执行的, // 此时的window.jQuery或window.$都很有可能是undefined,如果引入jq之前没有其他库使用了$和jQuery, // $.noConfilct()这种用法就是 将引入jq之前的window.$ 赋值给window.$,乍看很奇怪,其实就是 // 通过 上面的_$ = window.$先保存, 然后$.noConfilct()里面, window.$ = _$, 此时就完成了 // jq库放弃window.$的使用权, 此时window.$是什么呢, 在引入jq之前, $是什么,现在就是什么, // 比如undefined 或者是prototype.js中的$ // 同理如果$.noConfilct(true) 那么jq库也放弃了window.jQuery的使用权 jQuery.noConflict = function( deep ) { if ( window.$ === jQuery ) { window.$ = _$; } if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; } return jQuery; };
我也不是很理解,这段代码应该是把$ 和jQuery保存到未定义的_$和——jQuery中,然后判断是否已经解析完function后,如果执行noConfilct就把那个undefined的东东穿给$
汗。。再看了看又理解了。。脑子没转过来 哈哈哈
jQuery源码解析(架构与依赖模块)
84047 学习 · 280 问题
相似问题