相当于我发现这个话题,我已经实现(见接受的答案):
javascript equivalent of PHP's call_user_func()JavaScript的PHP的call_user_func
不过,我有多个参数有问题。我意识到我正在做的是将我的参数转换为字符串并将其视为1参数,但我不知道如何解决此问题,因为我动态创建参数。
含义,我在我的代码定义如下:
var a = new Array();
a[0] = new Array();
a[0][0] = 'alert';
a[0][1] = '\'Hello World\'';
a[1] = new Array();
a[1][0] = 'setTimeout';
a[1][1] = 'alert("goodbye world")';
a[1][2] = '20';
后来,我称他们是这样的:
var j = 0;
var len = 0;
var fx = '';
var params = '';
for(i in a){
params = '';
len = a[i].length;
fx = a[i][0]; // getting the function name
a[i].splice(0, 1); // removing it from array
if(len > 1){
params = a[i].join(", "); // trying to turn the parameters into the right format, but this is turning it into strings I think
params = params.replace(/\\'/g,'\''); // bc i was adding slashes with PHP
}
window[fx](params);
}
我没有使用数组来做到这一点。我不明白JS OOP(还没有尝试过),但我很喜欢PHP OOP,所以我不知道是否有办法在那里做到这一点。
任何帮助传递多个参数将不胜感激。
谢谢。
'window [fx] .apply(obj,params)' – Cheeso 2012-04-08 08:19:01
你在这里拍摄自己的脚。对于初学者:你不应该有一个包含代码为* strings *的数组,这是错误的。不要让我开始用正则表达式来解释这些字符串。你想做什么?进一步:**从不**在数组中使用'for .. in'循环,并且根本不应该使用'new Array()'。 – Tomalak 2012-04-08 08:42:42