卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

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

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

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

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

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

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

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

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

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

舉個例子來解釋以下這段代碼:

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

這段代碼的意思相當于:

var bb false;

var cc 11;

var dd 22;

if (!bb cc){

var aa cc;

}else{

var aa dd;

}

瀏覽器測試代碼。

緩存判斷

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

返回對象

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

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

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

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

標簽: