Reputation: 6359
In Javascript, I have an object:
obj = { one: "foo", two: "bar" };
Now, I want do do this
var a = 'two';
if(confirm('Do you want One'))
{
a = 'one';
}
alert(obj.a);
But of course it doesn't work. What would be the correct way of referencing this object dynamically?
Upvotes: 8
Views: 7200
Reputation: 62613
short answer: obj[a]
long answer: obj.field
is just a shorthand for obj["field"]
, for the special case where the key is a constant string without spaces, dots, or other nasty things. in your question, the key wasn't a constant, so simply use the full syntax.
Upvotes: 20
Reputation: 321698
As a side note, global variables are attached to the "window" object, so you can do
var myGlobal = 'hello';
var a = 'myGlobal';
alert(window[a] + ', ' + window.myGlobal + ', ' + myGlobal);
This will alert "hello, hello, hello"
Upvotes: 2