最近在研究Zepto的源碼,這是第一篇分析,歡迎你們繼續關注,第一次寫源碼筆記,但願你們多指點指點,第一篇文章因爲首次分析緣由不會有太多幹貨,但願後面的文章能成爲各位大大心目中的乾貨。數組
Zepto是一個匿名函數的運行結果,而zepto是該匿名函數中定義的一個對象,注意區分函數
match = ~zepto.qsa(parent, selector).indexOf(element)
zepto.qsa:zepto優化過的選擇器優化
zepto.qsa(parent, selector).indexOf(element):若選擇器返回值中沒法找到element則該語句運行值爲-1spa
~zepto.qsa(parent, selector).indexOf(element) :對後面的值進行取反,運算符優先級低於"."code
若爲null則返回"null"對象
不然,返回class2type[class2type.toString(obj)]blog
zepto會在代碼初始化部分初始化class2type對象:element
$.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { class2type[ "[object " + name + "]" ] = name.toLowerCase() })
返回不含null和undefined的數組(undefined == null 爲真,0 == nul和'' == null爲假)zepto