利用事件委托提升性能

作为一个入坑不久的前端,大部分的程序,都是在做交互,经常见到全篇大量都是EventUtil.addHandler(dom,method,function){},讲道理,着实看着心烦。心烦可以解决,看看片放松一下即可,关键性能瓶颈可不是看片能解决的。
添加到页面中的事件处理程序会直接关系到页面的整体运行性能。原因很多,首先,函数时对象,会占用内存,内存中的对象越多,性能就越差。其次,必须事先指定所有事件处理程序而导致的dom访问次数,会延迟整个页面的交互的就绪时间。
好吧,抄书嘛,连代码也一起抄了。

  EventUtil.addHandler(parentDom, "click", function(event) {
        event = EventUtil.getEvent(event);
        let target = EventUtil.getTarget(event);

        switch (target.id) {
            case "firstid":
                firstHandler();
                break;
            case "secid":
                secHandler();
                break;
        }
    })

优势在于
1、外层(document)对象很快就能访问,而且只要单击的元素呈现在页面上就可以立即具备功能(事件冒泡的机制)。
2、页面中设置事件处理程序的时间更少。
3、页面占用内存更少,能够提升整体性能。
适合的事件包括:click\mousedown\mouseup\keydown\keyup\keypress

提到性能,再说几句,当我们不需要的时候,最好的方法就是移除事件处理程序,很简单:

  btn.onclick = null; //ok~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值