博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记一次使用 removeEventListener 移除事件监听失败的经历
阅读量:5278 次
发布时间:2019-06-14

本文共 822 字,大约阅读时间需要 2 分钟。

测试一

测试代码如下

var Test = function() {  this.element = document.body;  this.handler = function() {    console.log(this);  };  this.element.addEventListener('click', this.handler.bind(this), false);  this.destroy = function() {    this.element.removeEventListener('click', this.handler, false);  };};var test = new Test();

但是,测试结果发现,调用 test.destroy() 后,点击依旧有效。明明按照以前看的文档说的,add 和 remove 的时候是同一个函数啊。

测试二

于是,又调整了一下代码。

var Test = function() {  this.element = document.body;  this.handler = function() {    console.log(this);  };  this.element.addEventListener('click', this.handler, false);  this.destroy = function() {    this.element.removeEventListener('click', this.handler, false);  };};

去掉了 add 时的 bind,再测试发现点击不响应了。

结论

经过测试,add 和 remove 事件监听回调时,既不能使用匿名函数,也不能改变指定函数的上下文。

转载于:https://www.cnblogs.com/xiaoyucoding/p/8516407.html

你可能感兴趣的文章
又一个新的css流程图示例
查看>>
结构体优先队列排序
查看>>
分词技术简介
查看>>
poj 3258 River Hopscotch(二分+贪心)
查看>>
[POJ 2559]Largest Rectangle in a Histogram 题解(单调栈)
查看>>
VMware
查看>>
深入了解以太坊虚拟机第5部分——一个新合约被创建后会发生什么
查看>>
io多路复用
查看>>
Cache缓存
查看>>
objective-c基础
查看>>
NET中各种加密解密方法
查看>>
HTTP协议详解-基础知识
查看>>
activity-alias详解及应用
查看>>
[51单片机] SPI nRF24L01 无线简单程序 1
查看>>
[ucgui] 对话框4——模式消息窗口
查看>>
Android之XML序列化和解析
查看>>
YPBPR_PC下图像有毛刺或者水纹干扰的处理办法
查看>>
刷题向》关于一道奇怪的贪心(田忌赛马)BZOJ1034(NORMAL-)
查看>>
SDN第五次上机作业
查看>>
常用代码收藏
查看>>