Javascript 从HTML调用类构造函数<;选择>;
在ECMAScript 6中,假设我有几个类: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
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];