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的东东穿给$
汗。。再看了看又理解了。。脑子没转过来 哈哈哈