我正在尝试基于变量名创建一些函数,类似于:
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引擎进行一些自定义选项。
此外,绝对无法更改调用函数的客户端代码。
答案 0 :(得分:7)
您可以使用窗口对象来创建全局函数。
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();
答案 1 :(得分:1)
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();
答案 2 :(得分:0)
您可以使用eval。
Dim regex As New System.Text.RegularExpressions.Regex("No")
For Each match As RegularExpressions.Match In regex.Matches(str)
Console.WriteLine("Match found @ {0}", match.Index)
Next