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

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

Susan Sarandon
发布: 2024-11-11 18:17:03
原创
817 人浏览过

How to Create Objects from Class Names in JavaScript ES6?

在 JavaScript ES6 中从类名创建对象

尝试使用标准 ES6 语法从类名创建对象时,您可能会遇到错误。以下代码演示了这一点:

import "./myModule.js";

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

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');
登录后复制

出现错误是因为类名无法全局访问或通过窗口对象可用。

解决方案:

为了解决这个问题,类本身应该存储在工厂对象中,而不是它们的名称。这种方法消除了对全局可访问性的依赖,并简化了工厂实现。

import "./myModule.js";

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

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

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

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