如何使用方括号表示法调用成员函数?

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

我知道我可以使用点符号这样从对象字面量中调用方法:
```javascript object.method(); ```
objectliteral.func1();

但我希望可以使用数组表示法来完成这个操作,就像这样:

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

我该怎么做?我知道可以使用apply或call方法,但我仍然不太明白它们的工作原理。

我可以这样做吗?:

objectliteral[func1].apply();

决议

基于答案:

objectliteral['func1']()

我所需要的就是这样。感谢大家。

6个回答

15

不要这样做:

objectliteral['func1']();

您还可以使用动态名称:

var myfuncname='func1';
objectliteral[myfuncname]();

3
你可以像这样做:
var objectLiteral = {
    func1: function() { alert('func1'); },
    func2: function() { alert('func2'); }
};

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

// As this does
objectLiteral.func1();

1
你可以尝试这个:
objectliteral['func1']();

1

使用 objectliteral["funct1"].apply()objectliteral["funct1"]() 调用用户对象。

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

var funname = "funct1";
objectliteral[funname ]()

1
var func1 = 'func1'
objectLiteral[func1]();

这应该能让你正常工作。


1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接