[NodeJs] Obsługa eventów a kontekst funkcji

0

Chcąc obsłużyć event (prawdopodobnie z EventEmitter [zewnętrzna biblioteka, nie jestem pewien na 100%]) i przypisując go do zdefiniowanej funkcji tracę kontekst 'this'. Zgaduję, że funkcja jest wywoływana poprzez function.apply.

Przykład:

class sampleClass {
    constructor() {
       sampleEventEmitter.on('sample-event', this._handleSampleEvent)
       
    }

    _handleSampleEvent() {
      //w tym miejscu this nie jest obiektem klasy
    }
}

Pytania:

  1. W jaki sposób "zgrabnie" odwołać się z poziomu zdefiniowanej funkcji obsługującej event do obiektu klasy?
  2. Czemu użycie funkcji anonimowej zachowuje kontekst (this wskazuje na obiekt klasy)?

Z góry dzięki :)

1
sampleEventEmtter.on('sample-event', () => {
  console.log(this);
});

Dzięki wykorzystaniu funkcji strzałeczkowej (arrow function) zostaje zachowany kontekst wewnątrz niej.

Ew.:

sampleEventEmitter.on('sample-event', this._handleSampleEvent.bind(this));

Efekt ten sam, więc wybierz to, co wygląda Twoim zdaniem ładniej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1