首页 > web前端 > js教程 > 如何使用 ES6 在 JavaScript 中从类名创建对象?

如何使用 ES6 在 JavaScript 中从类名创建对象?

Barbara Streisand
发布: 2024-11-23 09:53:31
原创
655 人浏览过

How to Create an Object from a Class Name in JavaScript Using ES6?

从 JavaScript ECMAScript 6 中的类名创建对象

问:我正在尝试使用 ES6 创建对象工厂,但是旧的-style 语法不适用于新语法。我有以下代码:

export class Column {}
export class Sequence {}
export class Checkbox {}

export class ColumnFactory {
    constructor() {
        this.specColumn = {
            __default: 'Column',
            __sequence: 'Sequence',
            __checkbox: 'Checkbox'
        };
    }

    create(name) {
        let className = this.specColumn[name] ? this.specColumn[name] : this.specColumn['__default'];
        return new window[className](name); // this line throws an error
    }
}

let factory = new ColumnFactory();
let column = factory.create('userName');
登录后复制

我做错了什么?

A:您不必在对象上放置类名。相反,将类本身放在那里,这样您就不必依赖它们是全局的并且可以通过 window 对象访问(在浏览器中)。

此外,没有理由让工厂成为一个类,因为您可能只会实例化一次(单例)。您可以将其设为对象:

export class Column {}
export class Sequence {}
export class Checkbox {}

export const columnFactory = {
    specColumn: {
        __default: Column,    // <--
        __sequence: Sequence, // <--
        __checkbox: Checkbox  // <--
    },
    create(name, ...args) {
        let cls = this.specColumn[name] || this.specColumn.__default;
        return new cls(...args);
    }
};
登录后复制

以上是如何使用 ES6 在 JavaScript 中从类名创建对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板