by Anonymous » 23 Apr 2025, 09:50
Ich möchte eine Klasse erstellen, die EventTarget erweitert, sodass addEventListener () und DispatchEvent () darauf aufgerufen werden können. Wenn eine Seite versehentlich mehr als eine instanziieren würde, würde ihre Funktionalität brechen. Aus diesem Grund habe ich die Gesamtheit der Logik dieser Klasse als statische Felder und Methoden implementiert.
Code: Select all
class MyClass extends EventTarget {
static dispatch(type) { MyClass.dispatchEvent(new Event(type)); }
}
MyClass.dispatch('hello');
< /code>
Uncaught TypeError: MyClass.dispatchEvent is not a function
Ich habe es auch versucht:
Code: Select all
class MyClass extends EventTarget {
static dispatch(type) { MyClass.prototype.dispatchEvent(new Event(type)); }
}
MyClass.dispatch('hello');
< /code>
Uncaught TypeError: 'dispatchEvent' called on an object that does not implement interface EventTarget.
Es muss etwas mit Konstruktoren und Prototypen vorhanden sein, um die Methoden von EventTarget direkt in MyClass zu bringen. Könnte mich jemand aufklären, wie ich das durchdenken muss? (Abgesehen von dem unangenehmen Hack, eine statische Klassenvariable zu deklarieren, die ein EventTarget enthält und Dinge an/von diesem weiterleitet.)
[url=viewtopic.php?t=14917]Ich möchte[/url] eine Klasse erstellen, die EventTarget erweitert, sodass addEventListener () und DispatchEvent () darauf aufgerufen werden können. Wenn eine Seite versehentlich mehr als eine instanziieren würde, würde ihre Funktionalität brechen. Aus diesem Grund habe ich die Gesamtheit der Logik dieser Klasse als statische Felder und Methoden implementiert.[code]class MyClass extends EventTarget {
static dispatch(type) { MyClass.dispatchEvent(new Event(type)); }
}
MyClass.dispatch('hello');
< /code>
Uncaught TypeError: MyClass.dispatchEvent is not a function[/code]
Ich habe es auch versucht:
[code]class MyClass extends EventTarget {
static dispatch(type) { MyClass.prototype.dispatchEvent(new Event(type)); }
}
MyClass.dispatch('hello');
< /code>
Uncaught TypeError: 'dispatchEvent' called on an object that does not implement interface EventTarget.[/code]
Es muss etwas mit Konstruktoren und Prototypen vorhanden sein, um die Methoden von EventTarget direkt in MyClass zu bringen. Könnte mich jemand aufklären, wie ich das durchdenken muss? (Abgesehen von dem unangenehmen Hack, eine statische Klassenvariable zu deklarieren, die ein EventTarget enthält und Dinge an/von diesem weiterleitet.)