javascript - 在 JavaScript 中,如何从它的字符串名称中检索类?

标签 javascript

<分区>

我有这样的xml文件

<X/>

我希望能够从中构建 JavaScript 对象。我必须从标签中检索 JavaScript 对象。可能与反射 API。为简单起见,标签名称等于类名称。

如何从它的字符串名称中检索类?

<html>
    <head>
        <script type="text/javascript">
                class X {
                    work(number, text, check) {
                        console.log("X.work: " + number + ", " + text + ", " + check);
                    }
                }
                // 1)
                var x1 = new X();
                x1.work(1, "Hello", false);
                // 2)
                var className = "X";
                var klass = window[className];
                var x2 = new klass();
                x2.work(1, "Hello", false); // klass == undefined
        </script>
    </head>
</html>

我有以下针对 Chrome 51.0.2704.103 的输入

 X.work: 1, Hello, false
 Uncaught TypeError: Cannot read property 'work' of undefined

我可以只知道它的名字就可以在 JavaScript 中使用类吗?

最佳答案

由于 Javascript 中的“类”只不过是常规变量/函数,您真正需要的是“可变变量”,使用对象映射最容易实现:

var nodes = {
    X: class X { ... },
    Y: class Y { ... }
};

// or:

class X { ... }

var nodes = { X: X };
// or the convenience shorthand in ES6:
var nodes = { X };

// then:

new nodes['X'](...);

关于javascript - 在 JavaScript 中,如何从它的字符串名称中检索类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37990629/

相关文章:

javascript - Electron +nuxt+amCharts 4 : Unexpected token export

javascript - vue动态加载recaptcha脚本

javascript - 如何使用 multiselect() 而不删除现有值并根据另一个选择添加新值

javascript - 清除间隔不起作用

javascript - 如何在 PHP 中将 html 部分包含到所有页面中

javascript - Components.utils.import() 中是否可以使用相对 URL/路径?

javascript - 在 express 之外的脚本中从 express 应用程序导入模块时出现问题

javascript - 正则表达式 (JavaScript) : match feet and/or inches

javascript - 拖放文件时,dataTransfer.items 属性在 Firefox 和 IE 中未定义,但在 Chrome 中则不然

javascript - NodeJS、mysql 和异步结果