事件模块的演变(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。添加修改后的结构如下