app = {
echo: function(txt) {
alert(txt)
},
start: function(func) {
this.func('hello');
}
}
app.start('echo');
我需要调用作为func传递的任何函数。怎么做?这个例子对我不起作用。
答案 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');
}