L'utilizzo di funzioni freccia ES6 con collegamento lessicale this
è ottimo.
Tuttavia, mi sono imbattuto in un problema poco fa di utilizzarlo con un jQuery tipica vincolante clic:
class Game {
foo() {
self = this;
this._pads.on('click', function() {
if (self.go) { $(this).addClass('active'); }
});
}
}
Utilizzando una funzione di freccia, invece:
class Game {
foo() {
this._pads.on('click',() => {
if (this.go) { $(this).addClass('active'); }
});
}
}
E poi $(this)
viene convertito in ES5 (auto = questo) chiusura del tipo.
È un modo per fare in modo che Traceur ignori "$ (this)" per il binding lessicale?
Se una delle risposte qui sotto * * risposto alla tua domanda, non dimenticate di contrassegnare come accettato . Se no, forse potresti chiarire cos'altro hai bisogno di sapere? –
questo sembra un perfetto esempio di quando non usare una funzione di freccia poiché '.on()' ha davvero un valore 'this' utile per te. Per me è molto più chiaro che "questo" si riferisce all'evento target piuttosto che dover passare l'evento e trovare il target manualmente. Non ho giocato molto con le funzioni di freccia, ma sembra che sarebbe confuso andare avanti e indietro con funzioni anonime. – robisrob