| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Errors/Not_a_constructor | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Der JavaScript-Ausnahmefehler "ist kein Konstruktor" tritt auf, wenn versucht wurde, ein Objekt oder eine Variable als Konstruktor zu verwenden, aber dieses Objekt oder diese Variable ist kein Konstruktor.
TypeError: x is not a constructor (V8-based & Firefox & Safari)
TypeError
Es wurde versucht, ein Objekt oder eine Variable als Konstruktor zu verwenden, aber dieses Objekt oder diese Variable ist kein Konstruktor. Weitere Informationen darber, was ein Konstruktor ist, finden Sie unter constructor oder dem new Operator.
Es gibt viele globale Objekte, wie zum Beispiel String oder Array, die mit new konstruiert werden knnen. Einige globale Objekte sind dies jedoch nicht, und ihre Eigenschaften und Methoden sind statisch. Die folgenden in JavaScript standardmig integrierten Objekte sind keine Konstruktoren: Math, JSON, Symbol, Reflect, Intl, Atomics.
Generator-Funktionen knnen ebenfalls nicht als Konstruktoren verwendet werden.
const Car = 1;
new Car();
// TypeError: Car is not a constructor
new Math();
// TypeError: Math is not a constructor
new Symbol();
// TypeError: Symbol is not a constructor
function* f() {}
const obj = new f();
// TypeError: f is not a constructor
Angenommen, Sie mchten einen Objekttyp fr Autos erstellen. Sie mchten, dass dieser Objekttyp Car genannt wird und er soll Eigenschaften fr Marke, Modell und Baujahr haben. Dazu wrden Sie die folgende Funktion schreiben:
function Car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
Nun knnen Sie ein Objekt namens myCar wie folgt erstellen:
const myCar = new Car("Eagle", "Talon TSi", 1993);
Wenn Sie ein sofort aufgelstes oder sofort abgelehntes Promise zurckgeben, mssen Sie kein new Promise(...) erstellen und darauf reagieren. Stattdessen verwenden Sie die statischen Methoden Promise.resolve() oder Promise.reject().
Dies ist nicht legal (der Promise Konstruktor wird nicht korrekt aufgerufen) und wird eine TypeError: this is not a constructor-Ausnahme werfen:
function fn() {
return new Promise.resolve(true);
}
Dies ist legal, aber unntig lang:
function fn() {
return new Promise((resolve, reject) => {
resolve(true);
});
}
Stattdessen geben Sie die statische Methode zurck:
function resolveAlways() {
return Promise.resolve(true);
}
function rejectAlways() {
return Promise.reject(new Error());
}
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |