从文本变量调用对象函数

时间:2011-02-19 12:13:44

标签: javascript

app = {
    echo: function(txt) {
       alert(txt)
    },
    start: function(func) {
        this.func('hello'); 
    }
}

app.start('echo');

我需要调用作为func传递的任何函数。怎么做?这个例子对我不起作用。

4 个答案:

答案 0 :(得分:8)

使用this[func]代替this.func

   app={
          echo:function(txt){
          alert(txt)
          },
         start:function(func){
            this[func]('hello');
          } 
        }

      app.start('echo');

答案 1 :(得分:4)

我想这是你能做的最简单的形式:

var app =
{
  echo: function(txt)
  {
    alert(txt);
  },

  start: function(func)
  {
    this[func]("hello");
  }
};

但是你可以对这些论点更聪明一点:

var app =
{
  echo: function(txt)
  {
    alert(txt);
  },

  start: function(func)
  {
    var method = this[func];
    var args = [];
    for (var i = 1; i < arguments.length; i++)
      args.push(arguments[i]);

    method.apply(this, args);
  }
};

这样你可以将其称为app.start("echo", "hello");

答案 2 :(得分:2)

尝试这种方式:

start: function(func) {
    this[func]('hello'); 
}

答案 3 :(得分:2)

start:function(func){
this[func]('hello');
}