Javascript -用变量名创建函数
Javascript - Create functions with variable name
我正在尝试创建一些基于变量名称的函数,如下所示:
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");};');
相关文章:
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- Javascript创建函数,以便在其他函数之间共享变量
- 调用函数和创建函数实例之间的Javascript差异
- setTimeout是否创建函数实例
- 使用 eval 从字符串创建函数的不同方法
- 如何在jquery中创建函数和parent.function
- 在for循环中创建函数
- 如何使用php代码创建函数Javascript弹出框
- 如何避免在循环中创建函数
- 在Javascript的函数原型中创建函数
- 在JS中动态创建函数
- 为什么在Javascript中创建函数有两种不同的方法
- 在循环中创建函数的最有效替代方法
- Javascript循环创建函数并使用收到的基于PHP Query的id附加值
- 如何在 Javascript 命名空间脚本中创建函数数组
- 在 JavaScript 中创建函数的原型
- 在 javascript 中创建函数的不同方式
- 如何创建函数式方法
- Javascript:在 for 循环中创建函数
- 在 JavaScript 中创建函数以启用/禁用基于选择的输入