为了账号安全,请及时绑定邮箱和手机立即绑定

js解除绑定事件的问题

js解除绑定事件的问题

慕标5832272 2019-03-08 16:11:48
<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>Title</title></head><body><input type="text"><script>    var input = document.querySelector('input');    input.addEventListener('input',aaa,false)    function a(e) {        setTimeout(function () {            b(e);        },200)    }    function b(e) {        input.removeEventListener('input',aaa,false);    }    function aaa(e) {        console.log(e.target.value);        a(e);    }</script></body></html><!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>Title</title></head><body><input type="text"><script>    var input = document.querySelector('input');    input.addEventListener('input',aaa.bind(this),false)    function a(e) {        setTimeout(function () {            b(e);        },200)    }    function b(e) {        input.removeEventListener('input',aaa.bind(this),false);    }    function aaa(e) {        console.log(e.target.value);        a(e);    }</script></body></html>上面两个代码为什么一个可以解除DOM的绑定的事件,一个不可以,原因出现在bind这个函数,我想知道为什么bind(this)就不能实现这个功能呢????
查看完整描述

2 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

每次 bind() 都会生成一个新的函数返回出来,所以 a.bind(o) !== a.bind(o)


查看完整回答
反对 回复 2019-03-13
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

每次使用bind都会返回一个函数对象,你在add和remove中两次使用bind返回了两个不同的函数对象,所以无法取消事件绑定。


查看完整回答
反对 回复 2019-03-13
  • 2 回答
  • 0 关注
  • 983 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信