Die Verwendung von ES6-Pfeilfunktionen mit lexikalischer this
Bindung ist großartig.
Vor kurzem bin ich jedoch auf ein Problem gestoßen, das ich mit einer typischen jQuery-Klickbindung verwendet habe:
class Game {
foo() {
self = this;
this._pads.on('click', function() {
if (self.go) { $(this).addClass('active'); }
});
}
}
Verwenden Sie stattdessen eine Pfeilfunktion:
class Game {
foo() {
this._pads.on('click', () => {
if (this.go) { $(this).addClass('active'); }
});
}
}
Und wird dann $(this)
in einen ES5-Verschluss (self = this) konvertiert.
Kann Traceur "$ (this)" für die lexikalische Bindung ignorieren?
.on()
dies tatsächlich einenthis
für Sie nützlichen Wert hat. Für mich ist es viel klarer,this
sich auf das Ereignisziel zu beziehen, als das Ereignis zu bestehen und das Ziel manuell zu finden. Ich habe nicht viel mit Pfeilfunktionen gespielt, aber es scheint verwirrend, mit anonymen Funktionen hin und her zu gehen.