当前位置: 首页 > news >正文

JavaScript 从事件处理入手的优化

前言

除了事件委托外另一个从事件处理优化的途径即及时清理挂载的事件处理程序.
事件委托通过限制了浏览器代码与JavaScript之间建立的联系数量以优化性能,那么及时切断这种联系也可达到相同目的.


一、如何清理

但仅移除DOM元素是无法达到目的的.
删除的元素上若有事件处理程序, 该DOM元素对象就不会被正常清理, 就像闭包不被回收一样, 用得上的东西便不会被垃圾回收机制扔掉.有的浏览器还会把元素对象和事件处理程序都留下.
比较保险的方式是先摘除掉事件处理程序:

xxx.onclick = null

xx.addEventListener('click', null);

而后移除DOM元素对象便不会残留事件处理程序.


二、另一个清理时刻

此外,页面unload(卸载)后, 事件处理程序也不会被清理.

"好像所有浏览器都会受这个问题影响”《Javascript高级程序设计》中称.

意味着用户每前进, 后退或刷新页面, 内存中都会增加残余对象, 所以最好在onunload事件处理程序中卸载挂载到DOM的事件处理程序.

遵循原则即: 在onload里挂载了什么, 就在onunload里摘除什么.

window.onunload = () => {xx.addEventListener('click', null);
}

END

😃

相关文章:

  • 《征服数据结构》哈夫曼树(Huffman Tree)
  • 鸿蒙开发(NEXT/API 12)【硬件(外设扩展驱动开发)】驱动开发服务
  • 【百日算法计划】:每日一题,见证成长(021)
  • IP地址如何与网络虚拟化技术融合?
  • AQS为什么采用双向链表
  • Linux 块设备开发学习
  • 8个前端小程序开发框架的介绍
  • 【JAVA开源】基于Vue和SpringBoot的足球俱乐部管理后台
  • 记一次停车场后台管理系统漏洞挖掘
  • 让具身智能更快更强!华东师大上大提出TinyVLA:高效视觉-语言-动作模型,遥遥领先
  • 小麦生长状态检测系统源码分享
  • 第十章 【后端】商品分类管理微服务 > 分类列表查询接口(10.8.3)——MyBatis-Plus 逻辑删除
  • Ansible 剧本的执行
  • 设备管理系统-TPM(PC+APP/PDA全流程)高保真Axure原型 源文件分享
  • 【二十七】【QT开发应用】VS如何复制项目,QT无边窗窗口Pro版本,信号与信号槽的应用,背景图片自适应控件大小
  • 【Amaple教程】5. 插件
  • CSS居中完全指南——构建CSS居中决策树
  • Java,console输出实时的转向GUI textbox
  • javascript面向对象之创建对象
  • JavaScript实现分页效果
  • Laravel Telescope:优雅的应用调试工具
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • php面试题 汇集2
  • redis学习笔记(三):列表、集合、有序集合
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 闭包,sync使用细节
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 前端_面试
  • 数据可视化之 Sankey 桑基图的实现
  • 系统认识JavaScript正则表达式
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 说说我为什么看好Spring Cloud Alibaba
  • 整理一些计算机基础知识!
  • ​低代码平台的核心价值与优势
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #VERDI# 关于如何查看FSM状态机的方法
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (黑马C++)L06 重载与继承
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (四) Graphivz 颜色选择
  • (算法二)滑动窗口
  • (转)Sublime Text3配置Lua运行环境
  • (自用)交互协议设计——protobuf序列化
  • .net 4.0发布后不能正常显示图片问题
  • .Net MVC + EF搭建学生管理系统
  • .Net Web窗口页属性
  • .NET 药厂业务系统 CPU爆高分析
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .net开发日常笔记(持续更新)
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强
  • @antv/g6 业务场景:流程图
  • @antv/x6 利用interacting方法来设置禁止结点移动的方法实现。