在Javascript代码中,由于
浏览器行为之间的差异,我们
经常在
函数中包含大量if语句来
检查浏览器特性并
解决不同浏览器的
兼容性问题:
复制代码代码如下所示:
函数AddEvent(
类型、元素、有趣){
如果(元。addEventListener){
element.addeventlistener(类型、乐趣、假);
}
如果(元。attachevent){
element.attachevent(开+型,好玩);
}
别的{
元{开+型} =乐趣;
}
}
每次你叫AddEvent
功能,它必须
支持的浏览器能力进行检查,首先检查是否支持addEventListener
方法,如果没有,再检查是否支持attachevent方法,如果通过DOM 0类方法不支持添加事件。这个过程中,当AddEvent函数调用去了,事实上,如果浏览器支持的一种方式,然后他会一直支持的
检测,不需要做其他的分支,也就是说,如果语句不需要为每个
执行的代码,可以
运行得更快。
解决方案是将其称为延迟加载技术。
所谓的懒加载意味着,如果一个职能部门只会执行一次,然后在函数被调用时,分支代码,支持直接进入。有两种惰性加载的方式,在第一次调用函数的第一件事,两次函数本身的功能,将挂满枝头的一个
条件的函数,调用原函数没有分支的执行后,我们可以使用惰性加载覆盖方式(AddEvent)。
复制代码代码如下所示:
函数AddEvent(类型、元素、有趣){
如果(元。addEventListener){
AddEvent =函数(类型、元素、有趣){
element.addeventlistener(类型、乐趣、假);
}
}
如果(元。attachevent){
AddEvent =函数(类型、元素、有趣){
element.attachevent(开+型,好玩);
}
}
别的{
AddEvent =函数(类型、元素、有趣){
元{开+型} =乐趣;
}
}
返回AddEvent(类型、元素、有趣);
}
在这个懒加载,每支AddEvent()语句指定AddEvent变量,有效地覆盖了原有的功能,最后一步是调用新函数。到下一个电话()AddEvent将直接调用新
任务的功能,如果没有更多的语句被执行。
实现懒加载二是指定适当的函数声明。这不失去
性能时,调用函数的时候,失去一点表现只有当加载代码。这是AddEvent(),是以这种方式重写。
复制代码代码如下所示:
VaR AddEvent =(函数(){()
如果(
文件。addEventListener){
返回函数(类型,元素,乐趣){
element.addeventlistener(类型、乐趣、假);
}
}
如果(文件。attachevent){
返回函数(类型,元素,乐趣){
element.attachevent(开+型,好玩);
}
}
{其他
返回函数(类型,元素,乐趣){
元{开+型} =乐趣;
}
}
});
使用这个例子的方法是
创建一个匿名自我通过不同的分支执行的功能应该被用来确定实际的功能,逻辑是一样的,不一样的地方是函数表达式的使用(使用var函数)和添加一个匿名函数,除了各分功能
正确,并立即指派给变量AddEvent。
延迟加载函数的优点是只执行一次分支,避免在每次执行函数时执行if分支和不必要的代码。因此,代码的性能得到了改善。那样的话,它更合适,也取决于你的需要。