(
function
( global, factory )
return
factory( w );
};
}
else
// pass this if window is not defined yet
}(
typeof
window !==
"undefined"
? window :
this
,
function
( window, noglobal ) ));
其中形參global的實參a是乙個三目運算子typeof window !== "undefined" ? window : this用於判斷當前執行環境是否支援window型別,是的話返回window,否則返回this
形參factory的實參b則是乙個函式,裡面包含了一萬多行的jq功能函式function( window, noglobal )
既然這個外部匿名函式的引數的值我們都清楚了,那麼來看下這個匿名函式又是啥作用的?(光看jq自帶的英文注釋我們可以大致知道它是為了相容node.js、sea-js等符合commonjs規範或類commonjs規範的js框架)
首先我們看這行判斷語句:if ( typeof module === "object" && typeof module.exports === "object" )
玩過node.js的朋友自然會知道module.export和export是node.js中用來建立模組的方法,那麼就好理解了,若此條件成立,則要執行下面語句來相容node.js(說白了就是利用形參factory做中間人,來把jq的各個功能模組用node.js建立模組的方法建立起來)
return
factory( w );
};
}
嗯,這樣就相容了node.js咯,那麼如果咱沒有用node.js這種commonjs規範的框架,也就是說條件if ( typeof module === "object" && typeof module.exports === "object" )不成立。那就直接執行後面else裡的部分:
factory( global );
也就是直接引入jq那一萬多行的功能函式即可。
jQuery原始碼解讀一
前言 我為什麼要看這個原始碼,很簡單,尋找我自己寫的js框架與jquery之間的差異,取長補短,最終目標是提高js程式設計的乙個眼界,看看別人是怎麼想的,因為自己乙個人的想法往往是片面的,也為了能讓自己的主觀漸漸接近客觀事實。雖然jquery框架能直接拿來用,但是對於偏愛研究的人來說,還是喜歡寫原生...
jquery原始碼解讀學習(一)
1.function global,factory use strict 嚴格模式if typeof module object typeof module.exports object return factory w else typeof window undefined window thi...
jquery原始碼解讀之callbacks篇
callbacks模組通過維護乙個 函式列表,來實現對 函式地管理。其操作包括增加,觸發,移除,清空,禁用,鎖定等,是jquery.defrred,jquery.ajax,jquery.ready等依賴的底層模組。let cblist callbacks once memory let fn arg...