Javascript RequireJS将动态依赖项作为变量加载

Javascript RequireJS将动态依赖项作为变量加载,javascript,jquery,requirejs,Javascript,Jquery,Requirejs,有没有办法将类名作为变量加载新窗口[a]似乎不起作用。我得到一个TypeError错误:窗口[a]不是构造函数 require([ 'myController' ], function (myController) { // this is working fine // new myController().init(); $(function() { var a = $('.test').attr('class'); // this retu

有没有办法将类名作为变量加载<代码>新窗口[a]似乎不起作用。我得到一个
TypeError错误:窗口[a]不是构造函数

require([
    'myController'
], function (myController) {
    // this is working fine
    // new myController().init();

    $(function() {
        var a = $('.test').attr('class'); // this returns myController
        new window[a]; // error here
    });
});

要执行您想要的操作,您需要像这样使用
eval

eval("new " + window[a] + "()");
工作示例:



注意:

窗口[a]
中有什么内容您是否将类名作为属性存储在全局范围中?比如,如果
window[a]
有字符串
“Foo”
,您想运行
new Foo()
?是的,您做对了。可能是因为使用eval()很危险。但有时这是解决问题的最好办法。这里有一个冗长的讨论:“JavaScript的eval()什么时候不是邪恶的?”——这是我能想到的唯一原因。但对于如何在不进行重大架构更改的情况下解决这个特殊问题,我给出了一个公正的答案。我永远不会在自己的代码中使用它。