8
var objectliteral = {
    func1:fn(){},
    func2:fn(){},
    .................
    funcn:fn(){}
}

我知道我可以使用点表示法从该对象字面量调用方法:

objectliteral.func1();

但我想使用这样的数组表示法来做到这一点:

objectliteral[func1]. .... something something......

我怎么做?我知道我可以使用 apply 或 call 方法——但我仍然不太了解它们是如何工作的。

我可以这样做吗?:

objectliteral[func1].apply();

解析度

根据答案:

objectliteral['func1']()

我所需要的。多谢你们。

4

6 回答 6

14

不,这样做:

objectliteral['func1']();

您还可以使用动态名称:

var myfuncname='func1';
objectliteral[myfuncname]();
于 2010-12-17T08:47:59.870 回答
3

你可以这样做:

var objectLiteral = {
    func1: function() { alert('func1'); },
    func2: function() { alert('func2'); }
};

// This does the same thing...
objectLiteral['func1']();

// As this does
objectLiteral.func1();
于 2010-12-17T08:51:18.597 回答
1

你可以试试这个:

objectliteral['func1']();
于 2010-12-17T08:48:05.723 回答
1

用户objectliteral["funct1"].apply()objectliteral["funct1"]().

您还可以使用变量来传递函数名称

var funname = "funct1";
objectliteral[funname ]()
于 2010-12-17T08:48:11.747 回答
1

你可以做objectliteral["func1"]();

于 2010-12-17T08:48:15.063 回答
1
var func1 = 'func1'
objectLiteral[func1]();

应该让你工作。

于 2010-12-17T08:48:19.443 回答