8.14 腾讯前端面试 事件模型
1.DOM 事件处理程序
1.HTML事件处理程序
指直接将事件写在HTML的DOM结构中
2.DOM 0 事件处理程序
指对JS中的dom对象的事件参数属性赋值
3.DOM 2 事件处理程序
使用addEventListener(或者IE中的attachEvent)指定DOM对象的指定事件,用removeEventListener删除事件,可以方便地对一个对象绑定多个事件
2.事件代理
原理:事件的冒泡/捕获机制,在event中记录了target,代表事件的事件源。
优点:
1.减少DOM事件绑定的内存消耗和事件注册的次数;
2.不用在子节点销毁时回收绑定在子节点上的事件
缺点:
1.事件委托基于冒泡,对于不冒泡的事件不支持。
2.层级过多,冒泡过程中,可能会被某层阻止掉。
3.理论上委托会导致浏览器频繁调用处理函数,虽然很可能不需要处理。因此建议就近委托,比如在table上代理td,而不是在document上代理td。
4.把所有事件都用代理就可能会出现事件误判。比如,在document中代理了所有button的click事件,另外的人在引用改js时,可能不知道,造成单击button触发了两个click事件。