我读了一篇文章(link),它解释了addEventListener
的seconde参数可以是实现handleEvent
方法的函数或对象。
在本文的但等待更多部分,它说使用handleEvent
可以避免删除并重新附加事件处理程序。但是我想知道这是否比反复添加更好的方式。和'删除'?在整洁的代码,性能或其他方面?
谢谢大家!
答案 0 :(得分:2)
使用对象作为侦听器:
var listener =
{
handleEvent: function (evt) {
this === listener; // true
// and evt === classic event object
}
};
document.addEventListener("click", listener, false);
具有以下优点:
this
与Event对象规范作者不应定义仅具有单个操作的回调接口,除非需要描述现有API的要求。相反,应该使用回调函数。
EventListener作为回调接口的定义是现有API的一个示例,它需要允许具有给定属性的用户对象(在本例中为“handleEvent”)来实现接口。对于新API以及没有兼容性问题的API,使用回调函数将只允许一个Function对象(在ECMAScript语言绑定中)。
<强>参考强>