通过变量动态实例化一个类

Rya*_*nce 5 javascript mootools

如何通过抛出变量名来实例化一个类?在类中考虑这个方法:

animate: function(el, build) { 
        console.log(build.effect); 
        var animationClass = new build.effect(el,build); 
}, 
Run Code Online (Sandbox Code Playgroud)

构建是一个包含大量内容的对象,但最重要的是"效果".此效果是独立动画类的名称 - 一个名为"MarioKartMenu".

console.log(build.effect)打印出"MarioKartMenu".但当然我得到:TypeError:表达式'build.effect'的结果[MarioKartMenu]不是构造函数.

如果我摒弃了动力,只需要制作代码:

animate: function(el, build) {
        var animationClass = new MarioKartMenu(el,build);
    }, 
Run Code Online (Sandbox Code Playgroud)

它工作得很好.是否有可能让它像我试图做的那样充满活力?

Aym*_*ieh 5

如果MarioKartMenu在全局范围中定义了该函数,则可以使用以下命令通过其字符串名称访问它:

window["MarioKartMenu"]
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为所有全局变量都是window对象的属性.

鉴于上述情况,您可以使用以下方法实现您想要的:

var menuConstructor = window[build.effect];
var animationClass = new menuConstructor(el, build);
Run Code Online (Sandbox Code Playgroud)