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

ReferenceError: must call super constructor before using 'this' in derived class constructor - 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

ReferenceError: must call super constructor before using 'this' in derived class constructor

Der JavaScript-Ausnahmefehler "Sie mssen den Superkonstruktor aufrufen, bevor 'this' im Konstruktor der abgeleiteten Klasse verwendet wird" tritt auf, wenn super() nicht fr einen gegebenen Konstruktor einer abgeleiteten Klasse aufgerufen wird und der abgeleitete Konstruktor versucht, auf den Wert von this zuzugreifen, oder der abgeleitete Konstruktor bereits zurckgegeben wurde und der Rckgabewert kein Objekt ist.

In diesem Artikel

Meldung

ReferenceError: Must call super constructor in derived class before accessing 'this' or returning from derived constructor (V8-based)
ReferenceError: must call super constructor before using 'this' in derived class constructor (Firefox)
ReferenceError: 'super()' must be called in derived constructor before accessing |this| or returning non-object. (Safari)

Fehlertyp

ReferenceError

Was ist schief gelaufen?

Der super()-Aufruf kann hchstens einmal fr jeden new-Aufruf eines Konstruktors der abgeleiteten Klasse aufgerufen werden. Oft mssen Sie ihn genau einmal aufrufen, denn wenn Sie ihn nicht aufrufen, kann der Elternkonstruktor den Wert von this nicht initialisieren, sodass Sie nicht auf this im abgeleiteten Konstruktor zugreifen knnen und this nicht als gltig konstruiertes Objekt betrachtet wird (und einen Fehler auslst, wenn der abgeleitete Konstruktor in diesem Zustand abgeschlossen wird). Der Ausweg besteht darin, ein Objekt aus dem Konstruktor der abgeleiteten Klasse zurckzugeben, in welchem Fall das zurckgegebene Objekt als konstruiertes Objekt anstelle von this verwendet wird, sodass Sie super() nicht aufrufen mssen. Dies wird jedoch selten gemacht.

Beispiele

Ungltige Flle

js
class Base {
  constructor() {
    this.x = 1;
  }
}

class Derived extends Base {
  constructor() {
    console.log(this.x);
    // The Base constructor is not called yet, so this.x is undefined
    // ReferenceError: must call super constructor before using 'this' in derived class constructor
  }
}

Gltige Flle

js
class Base {
  constructor() {
    this.x = 1;
  }
}

class Derived extends Base {
  constructor() {
    super();
    console.log(this.x); // 1
  }
}

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page