Javascript 从HTML调用类构造函数<;选择>;

Javascript 从HTML调用类构造函数<;选择>;,javascript,ecmascript-6,Javascript,Ecmascript 6,在ECMAScript 6中,假设我有几个类: class A { constructor() {...} methodA() {...} } class B { constructor() {...} methodB() {...} } 我希望用户能够从菜单中选择要实例化的类。下面是我尝试过的(未成功)的草图: 然后在以后的某个时候,我想构建所选择的东西: var X = document.getElementById("my_select").value v

在ECMAScript 6中,假设我有几个类:

class A {
    constructor() {...}
    methodA() {...}
}
class B {
    constructor() {...}
    methodB() {...}
}
我希望用户能够从
菜单中选择要实例化的类。下面是我尝试过的(未成功)的草图:

然后在以后的某个时候,我想构建所选择的东西:

var X = document.getElementById("my_select").value
var x = new X // doesn't work

最好的方法是什么?我的方法完全错了吗?

对于您正在尝试的任务,这是否是最好的方法,我不确定,但是如果您希望这样做,您可以使用允许您执行动态生成的JavaScript代码的函数

eval('var x = new' + X);
它显然需要调整以满足您的需要


将类放在一个对象中,以后可以通过值字符串引用该对象

class A {
    constructor() {}
    methodA() {}
}
class B {
    constructor() {}
    methodB() {}
}

let classMemory = {
    A, // Since you are using es6, you can do this
    B
};
然后,在
init
函数中,您将执行以下操作:

option.value = A.name; // Not using the constructor
option.text = A.name;
最后,这是有效的:

var x = new classMemory[document.getElementById("my_select").value];

回答得好!干杯
option.value = A.name; // Not using the constructor
option.text = A.name;
var x = new classMemory[document.getElementById("my_select").value];