Maison > interface Web > js tutoriel > Comment instancier dynamiquement des objets dans JavaScript ES6 ?

Comment instancier dynamiquement des objets dans JavaScript ES6 ?

Linda Hamilton
Libérer: 2024-12-05 11:18:14
original
1004 Les gens l'ont consulté

How to Dynamically Instantiate Objects in JavaScript ES6?

Instanciation d'objet dynamique dans JavaScript ES6

Énoncé du problème

La création d'objets à partir de noms de classe à l'aide de la syntaxe ancienne dans ES6 provoque une erreur. Le code suivant renvoie une erreur :

let className = this.specColumn[name] ? this.specColumn[name] : this.specColumn['__default'];
return new window[className](name);
Copier après la connexion

Solution

Pour résoudre le problème, supprimez les noms de classe de l'objet spécifié et utilisez à la place les classes elles-mêmes. Cela élimine le recours à l’accès global via l’objet window. De plus, l'usine peut être simplifiée en un objet, car elle n'est généralement instanciée qu'une seule fois.

Code Fix

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);
    }
};
Copier après la connexion

Ce code stocke les classes directement dans l'objet specColumn, permettant une dynamique instanciation d'objets à l'aide de la méthode create.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal