如何将变量作为可调用函数?

时间:2013-10-19 17:33:38

标签: javascript html

我有两个变量和一个函数。

<script> 

function myfunction(a1,a2,a3)
{
    alert(a1+a2+a3)
}

var fname="myfunction";
var fdata="data1,data2,data3";

</script>

我想从变量值调用函数。像这样

myfunction('data1','data2','data3')

我知道如何从变量值调用函数。

window[fname](); //this call myfunction()

但是不知道如何使用变量值中的多个参数调用函数?

如果可以的话,给我一个解决方案!

3 个答案:

答案 0 :(得分:3)

首先,您不必使用函数的名称来保持对它的引用。只需直接使用该功能:

var fname = myfunction;

然后你可以打电话给它:

fname('whatever');

要从该字符串传递参数,您必须将它们从字符串中取出,这个过程将取决于您首先将值组合成字符串的过程。在您的示例中,您可以在逗号上拆分字符串以创建数组,然后使用.apply()

fname.apply(null, fdata.split(','));

.apply()方法接受一个数组作为第二个参数(第一个是用于this的值),然后调用该函数,使得参数的值是数组。

答案 1 :(得分:1)

只需在括号之间添加参数

window[fname]('data1', 'data2', 'data3');

要使用fdata值动态传递参数,您应该使用apply(如@Pointy建议的那样)。

window[fname].apply(null, fdata.split(','));

答案 2 :(得分:0)

你可以修改你的代码:

<script type="text/javascript">
  function myfunction(a123) {

    // remove the coma if you don't want it.
    var completeData = a123.replace(/,/g, "");

    alert(completeData);
  }

  var fname = "myfunction";
  var fdata = "data1,data2,data3";

  window[fname](fdata);
</script>

我希望它有所帮助。