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

时间:2016-06-23 11:42:13

标签: javascript

我有像这样的xml文件

<X/>

我希望能够从中构造JavaScript对象。我必须从标签中检索JavaScript对象。可能使用Reflection 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中使用类只知道它的名字吗?

2 个答案:

答案 0 :(得分:1)

从&#34;班级&#34;在Javascript中只是常规变量/函数,你真正要求的是&#34;变量&#34; ,这是使用对象映射最容易实现的:

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'](...);

答案 1 :(得分:0)

我的Chrome 51.0.2704.103中有eval个关键字。无需制作全局类图。

var className = "X";
var klass = eval(className);
var x2 = new klass;
x2.work(1, "Hello", false);