Как я могу вызвать функцию-член, используя скобки? - PullRequest
6 голосов
/ 17 декабря 2010
var objectliteral = {
    func1:fn(){},
    func2:fn(){},
    .................
    funcn:fn(){}
}

Я знаю, что могу вызывать методы из этого литерала объекта, используя точечную нотацию:

objectliteral.func1();

Но я хотел бы сделать это, используя обозначение массива, как это:

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

Как мне это сделать? Я знаю, что могу использовать методы apply или call - но я все еще не совсем понимаю, как они работают.

Могу я просто сделать это?:

objectliteral[func1].apply();

РАЗРЕШЕНИЕ

на основе ответов:

objectliteral['func1']()

это все, что мне нужно. Спасибо, ребята.

Ответы [ 6 ]

11 голосов
/ 17 декабря 2010

Нет, сделайте это:

objectliteral['func1']();

Вы также можете использовать динамическое имя:

var myfuncname='func1';
objectliteral[myfuncname]();
2 голосов
/ 17 декабря 2010

Вы можете сделать это так:

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

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

// As this does
objectLiteral.func1();
1 голос
/ 17 декабря 2010
var func1 = 'func1'
objectLiteral[func1]();

Должен заставить вас работать.

1 голос
/ 17 декабря 2010

Вы можете сделать objectliteral["func1"]();

1 голос
/ 17 декабря 2010

пользователь objectliteral["funct1"].apply() или objectliteral["funct1"]().

Вы также можете использовать переменную для передачи имени функции

var funname = "funct1";
objectliteral[funname ]()
1 голос
/ 17 декабря 2010

Вы можете попробовать это:

objectliteral['func1']();
...