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 }
