当前位置: 首页 > 面试题库 >

在JavasScript ECMAScript 6中从字符串创建对象

谢选
2023-03-14
问题内容

我想使用ES6创建对象工厂,但是旧式语法不适用于新式语法。

我有下一个代码

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 throw error
    }
}

let factory = new ColumnFactory();
let column = factory.create('userName');

我做错了什么?


问题答案:

不要将类名放在该对象上。将类本身放在那里,这样您就不必依赖它们是全局的并且可以通过(在浏览器中)访问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);
    }
};


 类似资料:
  • 问题内容: 我有从外部应用程序获取数据的Java应用程序。传入的JSON以字符串形式。我想解析该Strings并创建BSON对象。 不幸的是,我在Java的BSON实现中找不到用于此的API。 我是否像GSON这样使用了外部解析器? 问题答案: 最简单的方法似乎是使用JSON库将JSON字符串解析为,然后使用方法将这些值放入。

  • 问题内容: 问题:有没有办法使用字符串在python中 创建函数对象 ? 信息:我正在一个项目中,该项目将数据存储在sqlite3服务器后端中。没什么可疯狂的。DAL类通常是通过代码生成来完成的,因为代码是如此平凡。但这给了我一个主意。在python中找不到属性时,如果定义函数,它将在错误之前调用该函数。因此,我通过解析器和逻辑树来计算它的方式可以动态生成第一次调用时所需的代码,然后将函数对象另存

  • 问题内容: 有没有办法从Java中的String变量创建新类? 另外,如果可能,生成的对象是否必须为Object类型? 也许有更好的方法,但是我希望能够从XML文件中检索值,然后实例化以这些字符串命名的类。这些类中的每一个都实现相同的接口,并从相同的父类派生,因此我将能够在该类中调用特定的方法。 问题答案: 这是你想做的: 请注意,newInstance方法不允许使用参数化的构造函数。(请参阅Cl

  • 问题内容: 我有一个包含多个子节点的大HTML字符串。 是否可以使用此字符串构造 jQuery DOM对象? 我试过了,但它只返回一个包含所有单个节点的数组。 试图获得一个我可以使用.find()函数的元素。 问题答案: 更新: 从jQuery 1.8开始,我们可以使用$.parseHTML,它将HTML字符串解析为DOM节点数组。例如: 这段代码中发生了什么: 是DOM中不存在的伪造品 作为孩子

  • 问题内容: 我有一个接受File作为参数的函数。我不想创建/写入新文件(我没有对文件系统的写访问权)以便将字符串数据传递给该函数。我应该补充说字符串数据在文件中不存在(所以我无法从文件中读取数据)。 我可以使用流并将其“广播”到文件对象吗? 问题答案: 没有; 类的实例表示文件系统中的路径。因此,您只能将该功能与文件一起使用。但是,也许有一个过载需要替代?

  • 问题内容: 我有一个字符串形式: 依此类推(长度会有所不同)。由此创建字典的最简单方法是什么? 我知道我可以拆分,但是我无法获得正确的语法。如果我分开,那么我如何将这两个部分结合在一起? 对此进行迭代似乎很痛苦。 问题答案: 编辑:下一个解决方案是当您想要将值作为整数,我认为这是您想要的。