jquery原始碼解讀1

2021-08-18 08:41:00 字數 1527 閱讀 4899

(function( global, factory )

returnfactory( w );

};

}else

// pass this if window is not defined yet

}(typeofwindow !=="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建立模組的方法建立起來)

returnfactory( 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...