jQuery函数parseHTML中的parsed分析
buildFragment函数及其参数
在jQuery的核心函数parseHTML中,涉及到了一个关键的函数buildFragment。关于buildFragment,网上有不少研究文档,认为通过buildFragment返回的parsed对象可以帮助parseHTML返回一个代码片段。
buildFragment函数的具体代码
根据jQuery的源码,在第500行处可以找到buildFragment函数的定义:parsed (); 这里让人不理解buildGragment到底是什么,以及buildGragment函数里面的三个参数:fragment、cacheable、cachehit。
在jQuery的代码中,可以找到关于buildFragment函数的具体代码,大约在第40行,其中的参数是args、context和scripts。args从英文意思来看,是参数的意思;context的意思是上下文环境;scripts的意思是脚本。
buildFragment函数的内部实现
buildFragment函数首先定义了三个变量:fragment、cacheable和cachehit。片段可能缓存,缓存标记。然后定义first args[0],即第一个是第一个参数args[0]。通常,args[0]是html标签内容。
举个例子来解释以下这段代码:
//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函数中,根据文档可知,如果first.length小于512字节,则可以将其缓存。同时,需要检查浏览器是否支持checkClone属性,并且浏览器是否支持html5。如果以上条件都满足,则cacheable为true,即可以进行缓存操作。
返回对象
在buildFragment函数中,最后返回一个对象,其中包含两个变量:和,即缓存对象和是否缓存。
现在回到parseHTML函数中的代码:
parsed ( [ data ], context, scripts ? null : [] );
这时候,parsed就有和两个属性。根据情况,可以返回的克隆副本,或者直接返回。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。