Вызвать метод 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);