Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用变量调用javascript对象方法_Javascript_Object - Fatal编程技术网

使用变量调用javascript对象方法

使用变量调用javascript对象方法,javascript,object,Javascript,Object,我不熟悉面向对象的javascript。我有一个变量,我想用它的值来调用对象的方法。像这样 var foo = { bar: function() {}, barr: function() {} } 现在有一个变量,它的值可以是两个方法名称bar和barr 我想给他们打个电话 var myvar = 'bar'; foo.{myVar}(); 因此,我假设您希望根据字符串动态调用相应的函数。您可以这样做: var myVar = 'bar'; foo[myVar](); 或

我不熟悉面向对象的javascript。我有一个变量,我想用它的值来调用对象的方法。像这样

var foo = {
    bar: function() {},
    barr: function() {}
}
现在有一个变量,它的值可以是两个方法名称
bar
barr
我想给他们打个电话

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

因此,我假设您希望根据字符串动态调用相应的函数。您可以这样做:

var myVar = 'bar';
foo[myVar]();
或者您也可以使用
eval
,但这样做风险更大(容易受到注射攻击),速度更慢(不要这样做!:p):


由于您可以通过下标符号访问对象的元素,因此以下内容将满足您的要求:

var myVar = 'bar';
foo[myVar]();
你可以说:

foo[myVar]();

由于
foo
是一个JavaScript对象,因此此代码将通过
myVar
变量中包含的名称引用成员。

使用类似于:
foo[myVar]()

应该是这样的

foo[myvar]();

谢谢答案太多了:O看起来像是我问了一个n00b问题:P但嘿,谢谢大家:)除了刚才回答的问题之外,没有n00b问题:):D所以很明显它们也像数组一样工作。。我们可以像调用数组一样调用它们
array['key']
。有趣。thnx@Achshar-在您的示例中,foo是一个对象。所有对象都可以使用数组类型语法访问其属性。它不是一个真正的数组(这就是为什么我写这个评论来确保你不认为它是一个数组),但是你可以使用foo['x']访问属性的语法与使用foo.x完全相同。@jfriend00哦,是的,我知道这是对的:)我只是想知道语法是一样的,这样开发者就不必记住语言中所有不同事物的一堆不同语法:DIf如果你开始学习JavaScript,这可能是一篇很好的文章:John Resig's。我知道它说的是“高级”,但它是从基本示例开始的,并且有一个很好的交互界面来修改和运行代码。@Groo-hey!非常感谢!a我不熟悉对象的东西,但它们有点让人困惑O但我同意:以这种方式调用对象方法似乎不起作用。使用try/catch,消息会显示“this[myVar]不是函数”
foo[myvar]();
var foo = {
    bar: function() { alert('bar'); },
    barr: function() { alert('barr'); }
}


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