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

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

一、总结

一句话总结:用eval来实现。eval可以执行参数字符串。

二、js将字符串作为函数名调用函数

比如我现在有一个字符串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>



三、随机执行函数实例

 1 var slideArr=new Array(
 2     'slideLeft',
 3     'slideTop',
 4     'slideRight',
 5     'slideBottom',
 6     'slideLeftTop',
 7     'slideTopRight',
 8     'slideRightBottom',
 9     'slideBottomLeft'
10 );
11 
12 function slideRandom(arr=slideArr,width,height,time) {
13     var length=slideArr.length;
14     var index=Math.floor(Math.random()*length);
15     var functionName=slideArr[index];
16     //alert(functionName);
17     eval(functionName+'(width,height,time)');
18 }
 
原文地址:https://www.cnblogs.com/Renyi-Fan/p/9253284.html