Das Erstellen von Objekten aus Klassennamen mit altmodischer Syntax in ES6 führt zu einem Fehler. Der folgende Code löst einen Fehler aus:
let className = this.specColumn[name] ? this.specColumn[name] : this.specColumn['__default']; return new window[className](name);
Um das Problem zu beheben, entfernen Sie Klassennamen aus dem angegebenen Objekt und verwenden Sie stattdessen die Klassen selbst. Dadurch entfällt die Abhängigkeit vom globalen Zugriff über das Fensterobjekt. Darüber hinaus kann die Factory auf ein Objekt vereinfacht werden, da sie normalerweise nur einmal instanziiert wird.
export class Column {} export class Sequence {} export class Checkbox {} export const columnFactory = { specColumn: { __default: Column, // <-- Class reference __sequence: Sequence, // <-- Class reference __checkbox: Checkbox // <-- Class reference }, create(name, ...args) { let cls = this.specColumn[name] || this.specColumn.__default; return new cls(...args); } };
Dieser Code speichert die Klassen direkt im specColumn-Objekt und ermöglicht so Dynamik Instanziierung von Objekten mit der Methode create.
Das obige ist der detaillierte Inhalt vonWie instanziiere ich Objekte in JavaScript ES6 dynamisch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!