javascript事件处理总结

btn.addEventListener(“click”, () => {

console.log(“Hello world!”); // 然后显示消息Hello world!

}, false);

需要特别注意的是,使用addEventListener()添加的匿名函数无法移除

// 匿名函数事件程序无法移除

let btn = document.getElementById(“myBtn”);

btn.addEventListener(“click”, () => {

console.log(this.id);

}, false);

// 其他代码

btn.removeEventListener(“click”, function() { // 没有效果!

console.log(this.id);

}, false);

// 建议以下形式抽取一个公共处理函数

let btn = document.getElementById(“myBtn”);

let handler = function() {

console.log(this.id);

};

btn.addEventListener(“click”, handler, false);

// 其他代码

btn.removeEventListener(“click”, handler, false); // 有效果!

  • IE事件处理程序

IE 实现了与 DOM 类似的方法,即 attachEvent()和 detachEvent() 。这两个方法接收两个同样的参数:事件处理程序的名字和事件处理函数

与DOM2相同:使用 DOM 方法类似,作为事件处理程序添加的匿名函数也无法移除

与DOM2不同:同一事件添加多个事件处理程序时,以添加的顺序反向触发

三、内存与性能

JavaScript 中,页面中事件处理程序的数量与页面整体性能直接相关

  • 每个函数都是对象,都占用内存空间,对象越多,性能越差
  • 指定事件处理程序所需访问DOM的次数会造成整个页面交互的延迟
事件委托

当我们页面中的 处理程序过多时 ,可以采用的解决方案是使用 事件委托

我们可以利用事件冒泡的特性,只使用一个事件处理程序来管理一个类型的事件

  • Go somewhere
  • Do something
  • Say hi
  • let list = document.getElementById(“myLinks”);

    list.addEventListener(“click”, (event) => {

    let target = event.target;

    switch(target.id) {

    case “doSomething”:

    document.title = “I changed the document’s title”;

    break;

    case “goSomewhere”:

    location.href = “http:// www.wrox.com”;

    break;

    case “sayHi”:

    console.log(“hi”);

    break;

    }

    });

    只给document添加一个事件处理程序,有如下优点

    • 任何时候都可以给document添加事件处理程序(不用等待DOMContentLoaded或load事件)
    • 只指定一个事件处理程序既可以节省DOM引用,也可以节省时间
    • 减少整个页面所需的内存,提升整体性能
    删除事件处理程序

    浏览器代码与js代码中通过事件处理程序建立了的联系越多,将导致页面性能越差

    所以我们还应该及时删除不同的事件处理程序

    最后

    自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

    深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

    因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

    img

    既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

    如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

    由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
    本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

    如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

    由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值