jquery源碼——noConflict實現

  實現方式很簡單:在初始化的時候,記錄當前全局中jQuery和$兩個變量的的值,用_jQuery和_$分別存放,調用noConflict方法時,使用_jQuery和_$分別恢復對應的值,而且返回jQuery對象。spa

  // 初始化jQuery對象時,調用邏輯以下:
  // 1. 記錄全局中的jQuery和$變量(此時這兩個變量指向生成jQuery對象以前的全局中的變量)
var // Map over jQuery in case of overwrite _jQuery = window.jQuery, // Map over the $ in case of overwrite _$ = window.$;
  // 2. 初始化jQuery上的noConflict方法,deep能夠傳入一個boolean值,若是傳入deep jQuery.noConflict
= function(deep) {
     // 若是此時全局中的$變量指向jQuery,釋放全局$變量
if (window.$ === jQuery) { window.$ = _$; }      // 若是deep爲true,而且jQuery指向jQuery,釋放全局jQuery變量 if (deep && window.jQuery === jQuery) { window.jQuery = _jQuery; }      // 返回jQuery對象 return jQuery; };   // 將jQuery暴露到全局(noGlobal在初始化時傳入)    if (!noGlobal) {        window.jQuery = window.$ = jQuery;    }
相關文章
相關標籤/搜索