使用ES6箭头函数与词法this
绑定非常好。
不过,我遇到了一个问题,刚才使用它具有典型的jQuery的点击绑定:
class Game {
foo() {
self = this;
this._pads.on('click', function() {
if (self.go) { $(this).addClass('active'); }
});
}
}
用箭头函数:
class Game {
foo() {
this._pads.on('click',() => {
if (this.go) { $(this).addClass('active'); }
});
}
}
然后$(this)
被转换到ES5 (self = this)类型闭包。
是否让Traceur忽略“$(this)”来进行词法绑定?
如果任一下面*回答问题的答案*你的问题,不要忘记将其标记为已接受。如果没有,也许你可以澄清你还需要知道什么? – 2016-11-30 17:00:59
这似乎是不使用箭头函数的完美示例,因为'.on()'确实具有对您有用的'this'值。对我来说,“this”指的是事件目标,而不是必须通过事件并手动找到目标,这更清晰。我没有玩过多少箭头功能,但似乎用匿名函数来回混淆会令人困惑。 – robisrob 2017-05-22 18:53:04