使用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