Heim > Web-Frontend > js-Tutorial > Wie instanziiere ich Objekte in JavaScript ES6 dynamisch?

Wie instanziiere ich Objekte in JavaScript ES6 dynamisch?

Linda Hamilton
Freigeben: 2024-12-05 11:18:14
Original
981 Leute haben es durchsucht

How to Dynamically Instantiate Objects in JavaScript ES6?

Dynamische Objektinstanziierung in JavaScript ES6

Problemstellung

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);
Nach dem Login kopieren

Lösung

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.

Code-Korrektur

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);
    }
};
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage