使用变量调用javascript对象方法
我不熟悉面向对象的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](); 或
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'