giocare con alcuni es6 e si è imbattuto in un problema che non so come risolvere. Consideriamo il seguenteclassi es6 e "questo" con gestori di eventi
class Foo {
constructor () {
window.addEventListener('scroll', this.watch);
}
watch () {
console.log(this);
}
}
interna di watch
, this
è l'oggetto window
, come previsto. Ma come faccio a fare riferimento a Foo
? Attualmente mi aggiro su questo con il bind this.watch.bind(this)
ma mi piacerebbe sapere se c'è un modo ES6 più "corretto" per ottenere questo risultato.
mi piacerebbe in genere hanno un 'var = sé questa' proprio all'interno Foo, ma ci si sente altrettanto brutto. Ma ricorda, JavaScript non è un linguaggio OO. – Ian
L'articolo [ECMAScript 6: metodi estratti automaticamente vincolanti] (http://www.2ality.com/2013/06/auto-binding.html) presenta 2 soluzioni. –
Provare a utilizzare una funzione di freccia grossa per l'orologio: 'watch() {() => {console.log (this)}}' –