[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Errors/Bad_super_prop [Back]  [Original]

SyntaxError: use of super property/member accesses only valid within methods or eval code within methods - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

SyntaxError: use of super property/member accesses only valid within methods or eval code within methods

Der JavaScript-Fehler "Verwendung von Super-Eigenschafts-/Mitgliedszugriffen nur in Methoden oder eval-Code innerhalb von Methoden zulssig" tritt auf, wenn die Syntax super.x oder super[x] auerhalb einer Methode 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

SyntaxError

Was ist schiefgelaufen?

Die Syntax super.x wird verwendet, um auf Eigenschaften im Prototyp des aktuellen Objekts zuzugreifen. Sie kann in Methoden sowohl von Objektliteralen als auch von Klassen, Feldinitialisierern und statischen Initialisierungsblcken verwendet werden, aber nicht in anderen Kontexten.

Beispiele

Ungltige Flle

Sie knnen super.x nicht auerhalb einer Methode in einem Objekt verwenden:

js
const obj = {
  __proto__: { x: 1 },
  x: super.x, // SyntaxError: use of super property accesses only valid within methods or eval code within methods
};

Sie knnen super.x nicht in einer Funktion verwenden, selbst wenn diese Funktion die Wirkung hat, eine Methode zu sein:

js
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;
}

Gltige Flle

Sie knnen super.x in einer Methode verwenden:

js
class Base {
  x = 1;
}

class Derived extends Base {
  getX() {
    return super.x;
  }
}

Sie knnen super.x in einem Feldinitialisierer verwenden:

js
class Derived extends Base {
  x = super.x;
}

Sie knnen super.x auch in Objektmethoden verwenden:

js
const obj = {
  __proto__: { x: 1 },
  getX() {
    return super.x;
  },
};

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page