js如何将字符串作为函数名调用函数

JavaScript019

js如何将字符串作为函数名调用函数,第1张

比如我现在有一个字符串str = "func_abc",func_abc是一个函数名,我现在知道str如何调用str这个字符串表示的函数.思路:1、用eval函数,字符串转换为命令行执行都可以通过eval函数。2、如果函数不多,可以通过if等方式进行判断,执行不同的分支。代码示例:function func_abc(){alert('a')}var str = "func_abc"eval(str+"()")//执行func_abc()函数将其用到实际项目中:<!DOCTYPE html><html><head><meta charset="UTF-8"><title>将字符串作为函数名调用函数</title></head><body><span>指标:</span><select id="zhibiao"><option selected="" value="总体">总体</option><option value="queryManagementVolume">办理量</option><option value="queryTimeConsuming">平均耗时</option><option value="queryOvertimePercent">超时占比</option></select></body><script src="../js/jquery.js"></script><script>$(document).on("change",'select#zhibiao',function(){ var fn=$(this).val() /* fn()*/ eval(fn+"()")})function queryManagementVolume(){ console.log("查询办理量")}function queryTimeConsuming(){ console.log("查询平均耗时")}function queryOvertimePercent(){ console.log("查询超时占比")}</script></html>

方案只有一种:

    通过eval方式把字符串转换为命令方式,执行字符串型方法函数。

示例

<script>

function func(a){//定义一个待参数的函数

  alert(a)

}

eval('func()')//调用函数不传入参数

eval('func("bcd")')//调用函数,传入参数

</script>

可以使用js的eval函数实现,示例如下:

<script type="text/javascript">

  //自定义函数,用于弹出三个参数的值

  function alertFunc(str1,str2,str3){

       alert(str1)

       alert(str2)

       alert(str3)

   }

 //自定义函数:根据传入的函数名,调用函数

 function callAlert(functionName){

      //根据函数名得到函数类型

       var  func=eval(functionName)

       //创建函数对象,并调用

      new func(arguments[1],arguments[2],arguments[3])

  }

 

 </script>

 <!--编写按钮,在点击事件中调用函数-->

 <button onclick="callAlert('alertFunc','tom','hello','world')" >测试函数调用</button>