Übrigens: Fenster ist der Verweis auf das globale Objekt in Browser-JavaScript. Das ist auch this
und sollte auch in Nicht-Browser-Umgebungen wie Node.js, Chrome-Erweiterungen, transpiliertem Code usw. funktionieren.
var obj = new this[classNameString]();
Die Einschränkung besteht darin, dass sich die aufgerufene Klasse im globalen Kontext befinden muss. Wenn Sie dasselbe auf eine Klasse mit Gültigkeitsbereich anwenden möchten, müssen Sie Folgendes tun:
var obj = (Function('return new ' + classNameString))()
Es gibt jedoch wirklich keinen Grund, eine Zeichenfolge zu verwenden. JavaScript-Funktionen sind selbst Objekte, genau wie Zeichenfolgen, die auch Objekte sind.
Bearbeiten
Hier ist ein besserer Weg, um den globalen Bereich zu erhalten, der sowohl im strengen Modus als auch in JS-Umgebungen ohne Browser funktioniert:
var global;
try {
global = Function('return this')() || (42, eval)('this');
} catch(e) {
global = window;
}
var obj = new global[classNameString]
Von: Wie erhalte ich das globale Objekt in JavaScript?