2016-04-15 29 views
2

调用类的构造函数在ECMAScript中6,说我有几个类:从HTML <select>

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 

这样做的最佳方法是什么?我的方法完全错误吗?

回答

1

类放在然后可以通过字串值以后引用的对象。

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]; 
+0

伟大的答案!干杯。 – aslanides