在 ECMAScript 6 中,假设我有几个类:
class A {
constructor() {...}
methodA() {...}
}
class B {
constructor() {...}
methodB() {...}
}
我希望用户能够选择从 <select>
实例化这些类中的哪一个菜单。这是我尝试过的(未成功)的草图:
<html>
<body onload="init()">
<select id="my_select"></select>
</body>
</html>
<select>
由 init()
填充:
function init() {
var select = document.getElementById("my_select")
var option = document.createElement("option")
option.value = A.constructor
option.text = A.name
select.add(option)
// ditto for B
}
然后在稍后的某个时候,我想构建所选择的任何东西:
var X = document.getElementById("my_select").value
var x = new X // doesn't work
执行此操作的最佳方法是什么?我的方法完全错误吗?
最佳答案
将您的类放在一个对象中,稍后可以通过值字符串引用该对象。
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];
关于javascript - 从 HTML <select> 调用类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36636831/