我是面向对象的javascript的新手。我有一个变量,其值我想用来调用对象的方法。喜欢这个..
var foo = {
bar: function() {},
barr: function() {}
}
现在有一个变量,其值可以是两个方法的名称bar
和barr
中的任何一个
我想用类似
var myvar = 'bar';
foo.{myVar}();
答案 0 :(得分:39)
所以我假设你想根据字符串动态调用适当的函数。你可以这样做:
var myVar = 'bar';
foo[myVar]();
或者您也可以使用eval
,但风险较高(容易发生注射攻击)而且速度较慢(不要这样做!:P):
var myVar = 'bar';
eval('foo.' + myVar + '()');
答案 1 :(得分:9)
由于您可以通过下标表示法访问对象的元素,因此以下内容可以满足您的需求:
var myVar = 'bar';
foo[myVar]();
答案 2 :(得分:6)
你可以说:
foo[myVar]();
由于foo
是JavaScript对象,因此此代码将引用myVar
变量中包含的成员。
答案 3 :(得分:4)
var foo = {
bar: function() { alert('bar'); },
barr: function() { alert('barr'); }
}
var myvar = 'bar';
foo[myvar](); // alert 'bar'
答案 4 :(得分:3)
使用类似:foo[myVar]();
答案 5 :(得分:3)
它应该是这样的
foo[myvar]();
答案 6 :(得分:-1)
我确信有更好的方法,但您可以使用eval()
:
var myvar = "bar";
var code = "foo." + myvar + "();"
eval(code);