вызовите объектный метод javascript с переменной - PullRequest
17 голосов
/ 18 июля 2011

Я новичок в объектно-ориентированном JavaScript.У меня есть переменная, значение которой я хотел бы использовать для вызова метода объекта.как это ..

var foo = {
    bar: function() {},
    barr: function() {}
}

теперь есть переменная, значением которой может быть любое из имен двух методов bar и barr я хочу вызвать их с чем-то вроде

var myvar = 'bar';
foo.{myVar}();

Ответы [ 7 ]

40 голосов
/ 18 июля 2011

Итак, я предполагаю, что вы хотите динамически вызывать соответствующую функцию на основе строки.Вы можете сделать что-то вроде этого:

var myVar = 'bar';
foo[myVar]();

Или вы также можете использовать eval, но это более рискованно (подвержено атаке инъекцией) и медленнее (, не делайте этого! :P):

var myVar = 'bar';
eval('foo.' + myVar + '()');
9 голосов
/ 18 июля 2011

Поскольку вы можете получить доступ к элементам объекта с помощью индексной нотации, следующее будет делать то, что вы ищете:

var myVar = 'bar';
foo[myVar]();
6 голосов
/ 18 июля 2011

Вы можете просто сказать:

foo[myVar]();

Поскольку foo является объектом JavaScript, этот код будет ссылаться на член по имени, содержащемуся в переменной myVar.

4 голосов
/ 18 июля 2011
var foo = {
    bar: function() { alert('bar'); },
    barr: function() { alert('barr'); }
}


var myvar = 'bar';
foo[myvar](); // alert 'bar'
3 голосов
/ 18 июля 2011

должно быть что-то вроде этого

foo[myvar]();
3 голосов
/ 18 июля 2011

Используйте что-то вроде: foo[myVar]();

0 голосов
/ 18 июля 2011

Я уверен, что есть лучший способ, но вы можете использовать eval():

var myvar = "bar";
var code = "foo." + myvar + "();"
eval(code);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...