ES6 箭头函数的问题

2015-11-20 12:40:31 +08:00
 exoticknight
直接上代码吧
```javascript
class foo {
setup(){
document.addEventListener('click', e=>this.hanlder)
}
hanlder(){}
}
```
在类中使用 `addEventListener`,为了 `this` 的绑定使用了箭头函数,但是怎么 `removeEventListener`?
3135 次点击
所在节点    JavaScript
8 条回复
FrankFang128
2015-11-20 12:48:38 +08:00
没有名字就无法 remove
exoticknight
2015-11-20 13:02:22 +08:00
@FrankFang128 如何解决?
zythum
2015-11-20 13:22:24 +08:00
给他赋个名字不就解决了....
exoticknight
2015-11-20 13:30:59 +08:00
不怎么优雅地解决了
hronro
2015-11-20 15:01:45 +08:00
箭头函数就是个匿名函数,这个就算是在 ES6 之前也是没有办法的吧
gleox
2015-11-20 21:05:27 +08:00
匿名函数可以把引用赋值给变量啊,后面直接 remove 掉就行了。

var h = e=>this.hanlder;

document.addEventListener('click', h);

document.removeEventListener('click', h);
gleox
2015-11-20 21:07:45 +08:00
看标题“箭头函数”,一时还真没想起是什么。
这种匿名函数,在 C#中被称为拉姆达表达式,不知道 js 里怎么称呼。
exoticknight
2015-11-20 21:31:36 +08:00
@gleox
嗯,主要是要在不同的类方法中分别调用 addEventListener 和 removeEventListener ,我将引用同时赋值给引用和 this._boundMethod['click'] 来解决了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/237591

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX