基于Eval图启动脚本

时间:2012-10-14 11:09:44

标签: javascript jquery eval

 $(".app-launch").on("click", function () {
    var appId = this.id;

    // Check if Function is running.
    if (typeof eval('$' + appId).start == 'undefined') {
         eval('$' + appId).start();
     }
 }

eval只是让它回来并说$ XXXXXX没有定义并杀死java脚本执行。反正有没有阻止它杀死执行并继续?这个函数要么启动应用程序,要么首先加载javascript然后启动应用程序,所以这个检查是为了确定是否已经加载了javascript。

3 个答案:

答案 0 :(得分:1)

首先,停止使用eval。如果您想要动态可变的变量,请使用对象。

然后,您可以在尝试访问其start属性之前测试对象的类型。

var objects = {};
var appId = "thing";

objects[appId] = { start: foo; }

if (
    typeof objects[appId] !== 'undefined' &&
    typeof objects[appId].start === 'function'
   ) {
    objects[appId]();
}

答案 1 :(得分:1)

试试这个

eval('$("' + appId + '"')

答案 2 :(得分:0)

如果您要检索全局变量,只需使用关联数组语法window['$'+appId]

此外,您的代码中断的原因是您正在检查是否定义了start方法,而不是$ XXXXXX。在引用该方法之前检查$ XXXXXX是否存在。此外,如果未定义方法,则调用该方法,这没有任何意义。

也是评估。

这是一个显示错误的jsfiddle。这是固定的version