Javascript -用变量名创建函数

Javascript - Create functions with variable name

本文关键字:创建 函数 变量名 Javascript      更新时间:2023-09-26

我正在尝试创建一些基于变量名称的函数,如下所示:

var functionsToRegister = ["foo","bar"];
var index;
for (index = 0; index < functionsToRegister.length; ++index) {
    var function_name = functionsToRegister[index];
    PART_IM_MISSING = new Function('return alert("hello, world!");');
}

客户端代码调用特定的方法例如,它将调用foo()

请注意,我不是在一个网站上工作,而是在一个本地的windows应用程序(SoftOne),允许一些自定义选项通过一个javascript引擎。

也绝对没有办法改变调用函数的客户端代码。

您可以使用window对象来创建一个全局函数。

var functionsToRegister = ["foo", "bar"],
    index,
    function_name;
for (index = 0; index < functionsToRegister.length; ++index) {
    function_name = functionsToRegister[index];
    window[function_name] = new Function('return alert("hello, world!");');
}
foo();

var functionsToRegister = ["foo","bar"];
var index;
for (index = 0; index < functionsToRegister.length; ++index) {
    var function_name = functionsToRegister[index];
    this[function_name]=function() {
        return alert("hello, world!");
    }
}

这将添加函数foo和bar到这个对象(或者你可以使用任何对象,如window),

但是我猜你不想要n个相同的函数…所以:

var functionsToRegister = {
    'foo':function() {return alert("hello, foo!");},
    "bar":function() {return alert("hello, bar!");},
};
var index;
for (index in functionsToRegister) if(functionsToRegister.hasOwnProperty(index)) {
    var function_name = index;
    var function_code = functionsToRegister[index];
    this[function_name]=function_code;
}
this['foo']();
this.bar();
foo();

可以使用eval

eval('var '+name+'=function(){alert("hello");};');