我发现了这个主题并实现了它(请参见被接受的答案):
javascript equivalent of PHP's call_user_func() 然而,我在处理多个参数时遇到了问题。我意识到我正在将我的参数转换为字符串,并将其视为一个参数,但我不知道如何解决这个问题,因为我是动态创建参数的。
这意味着,在我的代码中,我定义了以下内容:
稍后,我会像这样给他们打电话:
我不必使用数组来完成这个任务。虽然我熟悉 PHP 面向对象编程,但我还没有尝试过 JS 面向对象编程,因此我不知道在那里是否有做到这一点的方法。
如果您能提供关于传递多个参数的任何帮助,将不胜感激。
谢谢。
javascript equivalent of PHP's call_user_func() 然而,我在处理多个参数时遇到了问题。我意识到我正在将我的参数转换为字符串,并将其视为一个参数,但我不知道如何解决这个问题,因为我是动态创建参数的。
这意味着,在我的代码中,我定义了以下内容:
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);
}
我不必使用数组来完成这个任务。虽然我熟悉 PHP 面向对象编程,但我还没有尝试过 JS 面向对象编程,因此我不知道在那里是否有做到这一点的方法。
如果您能提供关于传递多个参数的任何帮助,将不胜感激。
谢谢。
window[fx].apply(obj, params)
- Cheesofor .. in
循环,也根本不应该使用new Array()
。 - Tomalakfor .. in
,这经常发生。当您想要创建自己的容器原型时,使用new Array()
非常方便。 - That Realty Programmer Guy