内存泄露之Listeners
页面中事件绑定数量会直接影响页面的整体运行性能,因为每个事件的回调处理函数都是一个对象,占用一定的内存。如果事件的绑定数量越多,内存也随之增加。另外,回调处理函数需要与DOM节点进行交互,而JS引擎独立于渲染引擎,而DOM是位于渲染引擎,相互访问需要消耗一定的资源。加上操作DOM,会引起浏览器的重排或重绘,而影响页面的整体性能。
事件代理 (事件委托) 利用了事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。
因此如何控制事件绑定数量就很重要了,通常都是通过事件代理(事件委托)来解决类似的问题。不过有时借助了事件代理(事件委托),而页面的事件绑定数量也在不断地增加?这可能是某些“不好”代码导致的,那如何定位增加的原因就显得很关键了。这里可以通过chrome的DevTools来辅助诊断。