事件模块的演变(7)
现有的事件管理都挂放在HTMLElement上的,即每个element有个events属性,该属性可以当成个hash对象。里面存储这该element的所有事件及事件handler。比如给element添加了click/mouseover/mouseout 三个事件,响应函数分别是f1/f2/f3。events的结构如下
每一个events['click'] 是一个数组,即存放多个handler。给element的click事件添加3个事件handler,其结构如下
往HTMLElement上添加了一个对象,该对象中存放了许多事件handler,可能会存在内存泄露的问题尤其在IE6中。这篇将修改下,HTMLElenent上不再挂events属性而是使用guid。即往HTMLELement上添加一个唯一数字,改数字作为对象evtHash的key以存放事件handler。添加修改后的结构如下
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步