Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
SyntaxError: super() ist nur in abgeleiteten Klassenkonstruktoren gültig
Der JavaScript-Ausnahmefehler "super() is only valid in derived class constructors" tritt auf, wenn der Aufrufsuper() an einer Stelle verwendet wird, die nicht im Körper einesKonstruktors in einer Klasse mit dem Schlüsselwortextends ist.
In diesem Artikel
Nachricht
SyntaxError: 'super' keyword unexpected here (V8-based)SyntaxError: super() is only valid in derived class constructors (Firefox)SyntaxError: super is not valid in this context. (Safari)
Fehlertyp
SyntaxErrorWas schiefgelaufen ist
Der Aufrufsuper() wird verwendet, um den Basiskonstruktor einer abgeleiteten Klasse aufzurufen, damit die Basisklasse dasthis-Objekt initialisieren kann. Die Verwendung an anderer Stelle ergibt keinen Sinn.
super() kann auch in einer Pfeilfunktion definiert werden, die im Konstruktor verschachtelt ist. Es kann jedoch in keiner anderen Art von Funktion definiert werden.
Beispiele
>Ungültige Fälle
Sie könnensuper() nicht aufrufen, wenn die Klasse keinextends hat, da es keine Basisklasse gibt, die aufgerufen werden könnte:
class Base { constructor() { super(); }}Sie könnensuper() nicht in einer Klassenmethode aufrufen, selbst wenn diese Methode vom Konstruktor aus aufgerufen wird:
class Base {}class Derived extends Base { constructor() { this.init(); } init() { super(); }}Sie könnensuper() nicht in einer Funktion aufrufen, selbst wenn die Funktion als Konstruktor verwendet wird:
function Base(x) { this.x = x;}function Derived() { super(1);}Object.setPrototypeOf(Derived.prototype, Base.prototype);Object.setPrototypeOf(Derived, Base);Gültige Fälle
Sie könnensuper() im Konstruktor aufrufen, bevor Sie eine andere Methode aufrufen:
class Base {}class Derived extends Base { constructor() { super(); this.init(); } init() { // … }}Sie könnensuper() in einer Pfeilfunktion aufrufen, die im Konstruktor verschachtelt ist:
class Base {}class Derived extends Base { constructor() { const init = () => { super(); }; init(); }}