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