Вызвать метод JavaScript javascript с переменной

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

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

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

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

Ответы

Ответ 1

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

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

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

var myVar = 'bar';
eval('foo.' + myVar + '()');

Ответ 2

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

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

Ответ 3

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

foo[myVar]();

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

Ответ 4

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


var myvar = 'bar';
foo[myvar](); // alert 'bar'

Ответ 5

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

Ответ 6

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

foo[myvar]();

Ответ 7

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

var myvar = "bar";
var code = "foo." + myvar + "();"
eval(code);