Javascript 从文本变量调用对象函数

Javascript 从文本变量调用对象函数,javascript,Javascript,我需要调用作为func传递的任何函数。怎么做?这个例子对我不适用。试着这样做: app = { echo: function(txt) { alert(txt) }, start: function(func) { this.func('hello'); } } app.start('echo'); 使用this[func]代替this.func start:function(func){ this[func]('hello')

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

试着这样做:

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

app.start('echo');

使用
this[func]
代替
this.func

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

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

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

      app.start('echo');
但你可以通过这些论点变得更聪明一些:

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

  start: function(func)
  {
    this[func]("hello");
  }
};
var应用程序=
{
回声:函数(txt)
{
警报(txt);
},
开始:函数(func)
{
var方法=此[func];
var args=[];
for(var i=1;i

这样你就可以称它为
app.start(“echo”,“hello”)

您必须使用字符串吗?为什么不能只传递函数来调用呢?您也可以使用arrays slice而不是手动循环参数数组,即使不是直接
var args=array.prototype.slice.call(参数,1)
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);
  }
};