2008-10-04 84 views
9

在Javascript中,我有一个对象:如何动态引用对象?

obj = { one: "foo", two: "bar" }; 

现在,我想这样做呢

var a = 'two'; 
if(confirm('Do you want One')) 
{ 
    a = 'one'; 
} 

alert(obj.a); 

但是,当然,这是行不通的。什么是动态引用这个对象的正确方法?

回答

16

简短的回答:obj[a]

长回答:obj.field仅仅是obj["field"]的简写,对于关键是没有空格,点,或常量字符串的特殊情况其他讨厌的东西。在你的问题中,关键不是一个常量,所以只需使用完整的语法。

2

作为一个侧面说明,全局变量连接到“窗口”的对象,所以你可以做

var myGlobal = 'hello'; 
var a = 'myGlobal'; 
alert(window[a] + ', ' + window.myGlobal + ', ' + myGlobal); 

这将提醒“喂,你好,你好”