在JavAscript中调用随机函数

时间:2014-05-09 11:28:34

标签: javascript

我的代码如下所示:

var MyObj = {
   run: function() {
    //random function
     var fncRun = this.listFnc[Math.floor(Math.random()*this.listFnc.length)];
    //call function
     this.fncRun(args1, args2);
   },
   fnc1: function() {
     console.log('run with function 1');
   },
   fnc2: function(args1) {
     console.log('run with function 2');
   },
   fnc3: function(args1, args2) {
     console.log('run with function 3');
   },
   listFnc: new Array("fnc1","fnc2","fnc3"),
};

MyObj.run();

但不行,这是错误:

Uncaught TypeError: undefined is not a function.

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

您不能使用this.variable来调用存储在变量中的方法名称。 JavaScript无法判断您是否要在变量中调用名为variable的方法或名称​​存储的方法。你需要this[variable]

 this[fncRun](args1, args2);

答案 1 :(得分:0)

您有两个问题需要解决:

1:运行函数中的args1和args2未定义;添加到运行功能

run: function(args1, args2) {
}

2:var fncRun是函数的名称,像这样检索函数:

this[fncRun](args1, args2);

新的运行功能(jsfiddle):

run: function(args1, args2) {
  //random function
  var fncRun = this.listFnc[Math.floor(Math.random()*this.listFnc.length)];
  //call function
  this[fncRun](args1, args2);
}