JS中传入一个值,然后执行这个值对应的方法,怎么弄

minidai 发布于 2016/01/25 16:52
阅读 1K+
收藏 0

云原生2.0展望丨从“小众”到“首选”,推动云原生产业落地华为云作用几何?>>>

我想创建一个方法,方法里面可以传入一个值

function demo(val){
//此处是我实在不知道怎么弄得地方
}
function test1(){
  alert(1) ; 
}
function test2(){
 alert(2) ;
}
function test3(){
 alert(3) ; 
}



例如我调用demo方法
demo(test1)



我如何才能让他调用test1这个方法,请别告诉我用if else  ,因为我想的是动态的,而不是固定好的

感谢各位帮我解决一下

加载中
2
rz
rz

var exe=new Array;
exe["test1"]=function(){}
exe["test2"]=function(){}

......

function demo(val){
    if(typeof(exe[val])=="function"){    
        exe[val]();
    }esle{
        alert("未找到对应的方法");
    }
}


minidai
minidai
谢谢
1
mark35
mark35

引用来自“dush”的评论


var exe=new Array;
exe["test1"]=function(){}
exe["test2"]=function(){}

......

function demo(val){
    if(typeof(exe[val])=="function"){    
        exe[val]();
    }esle{
        alert("未找到对应的方法");
    }
}



楼上这个比eval要安全。

下面这个适用性更高点:

function demo(fn){
  if (typeof fn === 'string' && typeof window[fn] === 'function') {
    window[fn]();
  }
  else if (typeof fn === 'function') {
    fn();
  }
  else {
    alert('param error');
  }
}
function test1(){
  alert(1) ; 
}
function test2(){
 alert(2) ;
}

var test3 = function(){
 alert(3) ; 
};

// 运行
demo('test1');

var foo = 'test2';
demo(foo);

demo(test3);




0
满风
满风

根据你传入的参数 调用你想调用的方法

比如在demo()  中 传入val

你判断 如果val ==1  你就调用test1  如果val==2你就调用test2

0
minidai
minidai

引用来自“开源中国驻乌办联络员”的评论

eval
谢谢  ,一些就明白了
0
故乡云
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
  function sayMorning(obj){
  alert("sayMorning:"+obj.name);
  }
  
  function sayEvening(obj){
  alert("sayEvening:"+obj.name);
  }
  
  function callDemo(){
  var _o={"name":"zhangsan","sayMorning":sayMorning,"sayEvening":sayEvening,};
  _o.sayMorning(_o);
  }
   callDemo();
  
</script>
</head>
<body>Hello
</body>
</html>
0
guo11235
guo11235
这不就是函数回调么
0
在下赵日天
在下赵日天
如果是函数的话,直接就填上val();就可以了。
0
红薯官方
红薯官方
function run(val) {val()}
function fun() {console.warn('function executed.');}

run(fun) // 执行




返回顶部
顶部