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

Odpowiedz Nowy wątek
2018-10-24 21:02
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 :)

Pozostało 580 znaków

2018-10-24 21:03
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.


edytowany 3x, ostatnio: Patryk27, 2018-10-24 21:04

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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