优化通用事件绑定函数addEvent

原创 lingwer111 随笔 JavaScript 131阅读 2017-05-10 11:03:10 举报

在Web开发中,因为浏览器之间的实现差异,一些嗅探工作总是不可避免的,比如我们需要一个在各个浏览器中能够通用的事件绑定函数addEvent, 常见的写法如下。
javascript 代码

这个函数的缺点是,当他每次被调用的时候都会执行里面的if条件分之,虽然执行这些if分之的开销不算大,但也许有一些方法可以让程序避免这些重复的执行过程

第二种方案是这样,我们把嗅探浏览器的操作提前到代码加载的时候,在代码加载的时候,就立即执行一次判断,以便让addEvent返回一个包裹了正确逻辑的函数,代码如下
javascript 代码

目前的addEvent函数依然有一个缺点,也许我们从头到尾都没有使用过addEvent函数,这样看来,前一次的浏览器嗅探就是完全多余的操作,而且这也会稍稍延长页面加载的时间。

第三种方案即是我们将要讨论的惰性加载函数方案, 此时addEvent依然被声明为一个普通函数,在函数里依然有一些分之判断,但是在第一次进入条件分支后,在函数内部会重写这个函数,重写之后的函数就是我们期望的addEvent函数,在下一次进入addEvent函数的时候,addEvent函数里不再存在条件分之语句
html 代码

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复