字句this
バインディングでES6矢印関数を使用するのは素晴らしいことです。
しかし、典型的な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)」を無視させる方法はありますか?
.on()
は実際にthis
有用な値を持っているので、アロー関数を使用しない場合の完璧な例のようです。私this
には、イベントを渡して手動でターゲットを見つける必要があるよりも、イベントターゲットを参照する方がはるかに明確です。私はアロー関数をあまり使っていませんが、無名関数を行ったり来たりするのは混乱するようです。