代码之家  ›  专栏  ›  技术社区  ›  Jens Törnell

字符串中的ES6类实例[重复]

  •  0
  • Jens Törnell  · 技术社区  · 7 年前

    这个问题已经有了答案:

    我尝试从字符串动态设置实例。我读过很多关于它的问题,但答案对我来说不起作用。

    它说可以使用 window 在设置实例的名称之前。它不起作用。

    class MyClass {
      // Something useful
    }
    
    let params = {};
    let name = 'MyClass';
    let instance = new window[name](params);
    

    我也试着做到这一点没有运气(抛出错误):

    let instance = new window['MyClass'](params);
    

    但是,这是可行的:

    let instance = new MyClass(params);
    

    为什么我不能使用 窗口 在这种情况下?还有其他想法吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Barmar    7 年前

    只放入全局变量 window 自动地。

    创建从类名映射到类的对象:

    const classMap = {
        "MyClass": MyClass,
        "MyClass2": MyClass2,
        ...
    };
    

    然后使用 classMap[name](params) 而不是 window[name](params) .