Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
SyntaxError: Verwendung von Super-Eigenschafts-/Mitgliedszugriffen nur in Methoden oder eval-Code innerhalb von Methoden zulässig
Der JavaScript-Fehler "Verwendung von Super-Eigenschafts-/Mitgliedszugriffen nur in Methoden oder eval-Code innerhalb von Methoden zulässig" tritt auf, wenn die Syntaxsuper.x odersuper[x] außerhalb einerMethode verwendet wird.
In diesem Artikel
Meldung
SyntaxError: 'super' keyword unexpected here (V8-based)SyntaxError: use of super property accesses only valid within methods or eval code within methods (Firefox)SyntaxError: super is not valid in this context. (Safari)
Fehlerart
SyntaxErrorWas ist schiefgelaufen?
Die Syntaxsuper.x wird verwendet, um auf Eigenschaften im Prototyp des aktuellen Objekts zuzugreifen. Sie kann in Methoden sowohl vonObjektliteralen als auch vonKlassen,Feldinitialisierern undstatischen Initialisierungsblöcken verwendet werden, aber nicht in anderen Kontexten.
Beispiele
>Ungültige Fälle
Sie könnensuper.x nicht außerhalb einer Methode in einem Objekt verwenden:
const obj = { __proto__: { x: 1 }, x: super.x, // SyntaxError: use of super property accesses only valid within methods or eval code within methods};Sie könnensuper.x nicht in einer Funktion verwenden, selbst wenn diese Funktion die Wirkung hat, eine Methode zu sein:
function getX() { return super.x; // SyntaxError: use of super property accesses only valid within methods or eval code within methods}const obj = { getX, getX2: function () { return super.x; // SyntaxError: use of super property accesses only valid within methods or eval code within methods },};class Derived extends Base { getX = () => super.x;}Gültige Fälle
Sie könnensuper.x in einer Methode verwenden:
class Base { x = 1;}class Derived extends Base { getX() { return super.x; }}Sie könnensuper.x in einem Feldinitialisierer verwenden:
class Derived extends Base { x = super.x;}Sie könnensuper.x auch in Objektmethoden verwenden:
const obj = { __proto__: { x: 1 }, getX() { return super.x; },};