2008-10-04 14 views
9

In Javascript, ich habe ein Objekt:Wie referenziere ich ein Objekt dynamisch?

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

Nun ich diesen Kurs aber von

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

alert(obj.a); 

tun will es nicht funktioniert. Was wäre die korrekte Art, dieses Objekt dynamisch zu referenzieren?

Antwort

16

kurze Antwort: obj[a]

lange Antwort: obj.field ist nur eine Abkürzung für obj["field"], für den speziellen Fall, in dem der Schlüssel ist, ein konstantes String ohne Leerzeichen, Punkte oder andere fiese Dinge. In Ihrer Frage war der Schlüssel keine Konstante, verwenden Sie einfach die vollständige Syntax.

2

Als Randnotiz werden globale Variablen an das „Fenster“ Objekt angebracht, so können Sie

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

tun Dies wird alarmieren „hallo, hallo, hallo“

Verwandte Themen