用变量调用javascript对象方法

时间:2011-07-18 18:53:17

标签: javascript object

我是面向对象的javascript的新手。我有一个变量,其值我想用来调用对象的方法。喜欢这个..

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

现在有一个变量,其值可以是两个方法的名称barbarr中的任何一个 我想用类似

的方式打电话给他们
var myvar = 'bar';
foo.{myVar}();

7 个答案:

答案 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);