根据另一个stackoverflow问题“ Are two functions equal?”,无法验证一个函数是否等于另一个函数。
这让我想知道target.removeEventListener(type, listener)
是如何实现的。
观察我的示例代码:
function eventHandler() {
alert("hello!");
document.removeEventListener("click", eventHandler);
}
document.addEventListener("click", eventHandler);
当我单击文档中的任意位置时,将弹出一个警告框,提示我“你好!”。当我关闭警报框并再次单击文档中的任意位置时,什么也没有发生。
我当然可以在同一事件的同一目标上注册多个侦听器。我什至可以注册多个具有相同名称的侦听器。
它是如何工作的?
最佳答案
您无法确定两个不同的函数是否等效,但是可以判断两个变量是否引用了同一函数。这些是2个不同的概念:
function add(a,b) {
return a+b;
}
function add2(a,b) {
return a+b;
}
var myAddFn=add;
console.log(myAddFn===add) //true
console.log(myAddFn===add2) //false
然后,如果removeEventListener方法具有给定事件的事件处理程序列表,则只需遍历它们并删除所需的事件处理程序即可。
关于javascript - 如何实现removeEventListener?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38459256/