接著,我們往后來看粒竖。從877-2856行,
都是完成一個(gè)功能几于,就是Sizzle蕊苗。
Sizzle功能就是讓一個(gè)復(fù)雜選擇器的實(shí)現(xiàn)。
它是jQuery中比較難的一部分沿彭,
實(shí)現(xiàn)也比較復(fù)雜朽砰,它也是獨(dú)立的。
然后膝蜈,從2880-3042行锅移,
Callbacks是jQuery中的回調(diào)對(duì)象熔掺,
它實(shí)現(xiàn)的功能主要就是通過
回調(diào)對(duì)象去管理函數(shù)饱搏,
(對(duì)函數(shù)的統(tǒng)一管理)。
為什么要統(tǒng)一管理置逻?
因?yàn)樵谧鲩_發(fā)的時(shí)候推沸,
如果說函數(shù)特別多的時(shí)候,
我們管理起來就比較麻煩,
若是有一套很好的方式可以統(tǒng)一管理的話鬓催,
其實(shí)肺素,操作起來就比較容易一些。
我們簡(jiǎn)單地來看看jQuery中是如何做的宇驾,
這就把它們統(tǒng)一的放到了一起倍靡,
除了這種添加方式,
比如說刪除课舍,
還有很多方法塌西,到時(shí)具體說,
所以說這對(duì)函數(shù)的管理還是很有幫助筝尾。
接著捡需,從3043-3183行,
它們實(shí)現(xiàn)的是Deferred筹淫,
延遲對(duì)象作用就是對(duì)異步的統(tǒng)一管理站辉。
在JS中很多都是異步的,
比如:定時(shí)器损姜,Ajax饰剥,等待DOM加載...
所以說在這些異步當(dāng)中沒有一個(gè)統(tǒng)一管理,
就會(huì)異步寫得越多摧阅,越復(fù)雜捐川,不容易管理。
但是逸尖,按照我們正常的邏輯思維古沥,
應(yīng)該是先寫的先執(zhí)行,
后寫的后執(zhí)行娇跟,
用延遲對(duì)象是這樣來書寫的岩齿。
在jQuery中這樣去寫,
就會(huì)先彈出1苞俘,再彈出2.
從而盹沈,我們可以發(fā)現(xiàn)在jQuery中,
延遲對(duì)象的做法是用回調(diào)去做的吃谣,
先去存乞封,當(dāng)上面那句話觸發(fā)的時(shí)候,
然后岗憋,再去調(diào)存的這個(gè)函數(shù)肃晚,
所以說延遲的原理很簡(jiǎn)單。
接下來仔戈,我們往后來看关串,
從3184-3295行拧廊,它實(shí)現(xiàn)了support,
這叫做功能檢測(cè)的方法晋修。
什么是功能檢測(cè)呢吧碾?
這個(gè)就是在我們之前去做瀏覽器判斷時(shí),
判斷是什么瀏覽器墓卦,
執(zhí)行什么不同的操作倦春,
需要得到瀏覽器的信息,
判斷它到底是哪個(gè)版本的落剪。
這種對(duì)之前的開發(fā)都是可以的溅漾,
但是,現(xiàn)在隨著網(wǎng)絡(luò)的發(fā)展著榴,
其實(shí)添履,瀏覽器更新速度是非常之快的,
版本變化得也是非衬杂郑快暮胧,
所以說光是用來判斷瀏覽器版本的話,
其實(shí)问麸,對(duì)我們維護(hù)起來是非常不利的往衷,
但是我們要是用來判斷功能去判斷瀏覽器,
這就比較靠譜了严卖,
因?yàn)橥笊?jí)的瀏覽器它的功能會(huì)被保留的席舍,
所以說這個(gè)功能檢測(cè)是對(duì)瀏覽器發(fā)展是非常有用的。
以后哮笆,我們就不用判斷瀏覽器了来颤,
可以通過功能檢測(cè)判斷不同瀏覽器的版本。
這里稠肘,我找了一個(gè)叫checkOn功能檢測(cè)講講福铅。
其實(shí)在我們寫的一個(gè)input的是復(fù)選或者單選框時(shí),
大部分瀏覽器默認(rèn)的value的是on项阴,
然而滑黔,在老版本的WebKit下的瀏覽器,
它們默認(rèn)的是空环揽,
所以說我們要區(qū)分新老WebKit瀏覽器略荡,
是不是就可以同過這個(gè)方法去判斷了,
這一塊兒歉胶,還有很多功能檢測(cè)汛兜,
咱們到時(shí)候具體講它的時(shí)候再給大家說,
先知道一下它是干嘛的跨扮,就可以了序无。
回看上一集:
原文中此處為鏈接验毡,暫不支持采集
別走開衡创,下集更精彩帝嗡。
喜歡文章的小伙伴,
希望大家多多轉(zhuǎn)發(fā)分享璃氢,
你的分享就是我的動(dòng)力哟玷!
喜歡 分享 or