避免使用eval(),我需要一种方法将多个参数传递给变量函数

时间:2013-04-26 03:13:39

标签: javascript function eval

尝试将多个参数传递给变量函数调用..

function myFunction(myvar,time){
    alert(myvar);   
}

t_function = "myFunction";
t_params = "haha,hehe";
window[t_function](t_params);

我基本上需要模仿这个电话

myFunction("haha","hehe");

我无法在变量函数调用中设置特定数量的参数,例如

// I will not know how many params a function will need.
window[t_function](t_params1,t_params2,etc);

有什么想法吗?我很想使用eval。

------最终做到了-----

function myFunction(myvar1,myvar2){         警告(myvar1 +“和”+ myvar2);

}

t_function = "myFunction";
t_params = [];
t_params[0] = "haha";
t_params[1] = "hehe";

window[t_function].apply(this,t_params);

感谢所有人,尤其感谢Joseph the the Dreamer

2 个答案:

答案 0 :(得分:2)

你需要apply,它在你的函数中接受this的值,以及一个参数数组:

window[t_function].apply(this,[arg1,arg2,...,argN]);

该功能将收到它:

function myFunction(arg1,arg2,...,argN){...}

传递给调用函数的每个值都可以通过类似数组的arguments来访问。这在参数是动态的时尤其有用。因此,您可以执行以下操作:

function myFunction(){
  var arg1 = arguments[0]; //hello
  var arg2 = arguments[1]; //world
}

//different ways of invoking a function
myFunction('hello','world');
myFunction.call(this,'hello','world');
myFunction.call(this,['hello','world']);

答案 1 :(得分:1)

如果您可以可靠地使用,作为分隔符,请尝试以下操作:

window[t_function].apply(null,t_params.split(","));