javascript - 从 HTML <select> 调用类构造函数

标签 javascript ecmascript-6

在 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/

相关文章:

javascript - 是否可以使用 javascript :window. print() 返回值?

javascript - 配置为文件观察器时,UglifyJS 无法在 intellij 中运行

javascript - 将数据ajax发送到php

javascript - 在 ES6/7 中选择性地分配对象属性

javascript - 由于 ES2015 模板文字导致的 Webpack 错误 - "Unterminated string constant"

javascript - 用 jQuery/JavaScript 替换 , 的最后一个索引

JavaScript 到 HTML

javascript - 为什么我能够使用 'let' 在 for 循环内再次初始化和分配变量?

javascript - `Symbol.iterator` 产生对象的值

javascript - Node.js chai 是一个 item 对象