成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

jQuery函數(shù)parseHTML中的parsed分析

buildFragment函數(shù)及其參數(shù)在jQuery的核心函數(shù)parseHTML中,涉及到了一個(gè)關(guān)鍵的函數(shù)buildFragment。關(guān)于buildFragment,網(wǎng)上有不少研究文檔,認(rèn)為通過(guò)bui

buildFragment函數(shù)及其參數(shù)

在jQuery的核心函數(shù)parseHTML中,涉及到了一個(gè)關(guān)鍵的函數(shù)buildFragment。關(guān)于buildFragment,網(wǎng)上有不少研究文檔,認(rèn)為通過(guò)buildFragment返回的parsed對(duì)象可以幫助parseHTML返回一個(gè)代碼片段。

buildFragment函數(shù)的具體代碼

根據(jù)jQuery的源碼,在第500行處可以找到buildFragment函數(shù)的定義:parsed (); 這里讓人不理解buildGragment到底是什么,以及buildGragment函數(shù)里面的三個(gè)參數(shù):fragment、cacheable、cachehit。

在jQuery的代碼中,可以找到關(guān)于buildFragment函數(shù)的具體代碼,大約在第40行,其中的參數(shù)是args、context和scripts。args從英文意思來(lái)看,是參數(shù)的意思;context的意思是上下文環(huán)境;scripts的意思是腳本。

buildFragment函數(shù)的內(nèi)部實(shí)現(xiàn)

buildFragment函數(shù)首先定義了三個(gè)變量:fragment、cacheable和cachehit。片段可能緩存,緩存標(biāo)記。然后定義first args[0],即第一個(gè)是第一個(gè)參數(shù)args[0]。通常,args[0]是html標(biāo)簽內(nèi)容。

舉個(gè)例子來(lái)解釋以下這段代碼:

//context ! context[0] || context; bb false; cc "22";; dd "33";; var aa !bb cc || dd; console.log(aa);

這段代碼的意思相當(dāng)于:

var bb false;

var cc 11;

var dd 22;

if (!bb cc){

var aa cc;

}else{

var aa dd;

}

瀏覽器測(cè)試代碼。

緩存判斷

在buildFragment函數(shù)中,根據(jù)文檔可知,如果first.length小于512字節(jié),則可以將其緩存。同時(shí),需要檢查瀏覽器是否支持checkClone屬性,并且瀏覽器是否支持html5。如果以上條件都滿足,則cacheable為true,即可以進(jìn)行緩存操作。

返回對(duì)象

在buildFragment函數(shù)中,最后返回一個(gè)對(duì)象,其中包含兩個(gè)變量:和,即緩存對(duì)象和是否緩存。

現(xiàn)在回到parseHTML函數(shù)中的代碼:

parsed ( [ data ], context, scripts ? null : [] );

這時(shí)候,parsed就有和兩個(gè)屬性。根據(jù)情況,可以返回的克隆副本,或者直接返回。

標(biāo)簽: