ES6 箭头函数的问题

2015 年 11 月 20 日
 exoticknight
直接上代码吧
```javascript
class foo {
setup(){
document.addEventListener('click', e=>this.hanlder)
}
hanlder(){}
}
```
在类中使用 `addEventListener`,为了 `this` 的绑定使用了箭头函数,但是怎么 `removeEventListener`?
3744 次点击
所在节点    JavaScript
8 条回复
FrankFang128
2015 年 11 月 20 日
没有名字就无法 remove
exoticknight
2015 年 11 月 20 日
@FrankFang128 如何解决?
zythum
2015 年 11 月 20 日
给他赋个名字不就解决了....
exoticknight
2015 年 11 月 20 日
不怎么优雅地解决了
hronro
2015 年 11 月 20 日
箭头函数就是个匿名函数,这个就算是在 ES6 之前也是没有办法的吧
gleox
2015 年 11 月 20 日
匿名函数可以把引用赋值给变量啊,后面直接 remove 掉就行了。

var h = e=>this.hanlder;

document.addEventListener('click', h);

document.removeEventListener('click', h);
gleox
2015 年 11 月 20 日
看标题“箭头函数”,一时还真没想起是什么。
这种匿名函数,在 C#中被称为拉姆达表达式,不知道 js 里怎么称呼。
exoticknight
2015 年 11 月 20 日
@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