Setzen Sie Ereignis-Listener in ES6-Klassendefinitionen, die EventEmitter erweitern

8

Ich möchte einige vordefinierte benutzerdefinierte Listener, die bereits mit der definition der Klasse definiert sind (wie der Build in 'newListner' Ereignis). Daher möchte ich sie nicht einfach im Konstruktor binden, da sie bei jeder neuen Instanz dieser Klasse ausgeführt würde.

Wie geht das? Modifizieren Sie den Prototyp? Ist das überhaupt möglich?

Was ich bisher habe:

%Vor%     
flori 04.03.2016, 13:04
quelle

2 Antworten

6

Sie können nicht vermeiden, die Listener für jede Instanz einzeln zu registrieren, und der natürliche Ort dafür ist der Konstruktor 1, 2 . Sie können jedoch vermeiden, neue Listenerfunktionen zu erstellen:

%Vor%

1: Es gibt andere Möglichkeiten, wie ein Getter für ._events . Man könnte damit alles Mögliche machen, einschließlich der prototypischen Vererbung für "Standard" -Hörer, aber diese sind völlig überkompliziert und kommen schnell über den Kopf. Sie können auch phantastische Dinge tun - und viel sauberer - indem Sie einfach etwas generischen Code in den Konstruktor einfügen 2: Sie könnten auch die init -Methode von EventEmitters überschreiben (spezialisieren), aber es kommt genau auf dasselbe an.

    
Bergi 04.03.2016 13:32
quelle
0

Da, soweit ich sehen kann, mehrere Instanzen des Cat Senders nicht miteinander kommunizieren können, müssen Sie den Listener für jede Instanz im Konstruktor registrieren:

%Vor%

Sie können Ihre Emitter-Instanz dann immer für verschiedene Dateien freigeben, indem Sie require in die Skripte einfügen, in denen Sie sie benötigen.

    
nils 04.03.2016 13:30
quelle