2013-03-22 18 views
5

trzeba utworzyć zmienną nazwę zmiennej w JS ...Zmienne Zmienne w JS

obj = {}; 
obj.fooonex = {}; 
obj.fooonex.start = 1; 
obj.fooonex.end = 2; 

a = "foo"; 
b = "one"; 
c = "x"; 

test = a + b + c; 

alert(obj.test.start); 

Chcę wynikiem będzie "1"

skrzypce tutaj: http://jsfiddle.net/mR6BH/

+0

Wyjazd http://stackoverflow.com/questions/15561490/variable-variable -in-js/15561537 # 15561537 –

Odpowiedz

10

Trzeba Sposób postępowania:

alert(obj[test].start); 
+0

AWESO MNIE!!! Dzięki!! –

+0

Zaktualizowane skrzypce tutaj: http://jsfiddle.net/mR6BH/1/ –

+0

@MilkMan, jeśli to rozwiązało twoje pytanie, ustaw odpowiedź na "zaakceptowane" – GNi33

-1

ogólny 2 błędów, to znaczy bardziej niezawodne rozwiązanie

Goops! nawet wszystko jak struny !!!
Z powyższego problemu rozszerzam nazwę obiektu, nazwę właściwości na ciąg Jang! ...

objectname = "obj"; 
propertyname = "start"; 

// spróbuj alert (get (objectname + + + + PROPERTYNAME Test). "" "");

function get(path) { 
    var next = window; 

    path = path.split(/[\[\]\.]+/); 

    if (path[path.length - 1] == "") { 
     path.pop(); 
    }; 

    while (path.length && (next = next[path.shift()]) && typeof next === "object" && next !== null); 

    return path.length ? undefined : next; 
} 

Kolejny

function getPropertyValueByPath (obj, path) 
    { 
     path = path.split(/[\[\]\.]+/); 

     if(path[path.length - 1] == "") 
     { 
      path.pop(); 
     }; 

     while(path.length && (obj = obj[path.shift()])); 

     return obj; 
    } 

Wykorzystanie

alert(getPropertyValueByPath(obj,test+ "." + propertyname)); 
alert(get(objectname + "." + test + "." +propertyname)); 

dla recommented Way

eval(objectname + "." + test + "." +propertyname) 

Another way `eval("obj." + test + ".start")` 
a way of insecure and non-advised eval() 
+1

Przepraszam, ale ... co? jak to jest związane z pytaniem? – GNi33

+0

Przepraszam za to, jestem agin z nową odpowiedzią, jak to jest? –

+0

Korzystanie z eval to zła praktyka. Używanie eval, gdy JavaScript już obsługuje funkcje bezpośrednio (przez dostęp do tablicy) jest jeszcze gorsze. Dobra książka do nauki pisania skryptów JavaScript to "JavaScript: dobre części" Douglasa Crockforda. Właściwym sposobem uzyskania dostępu do testu właściwości dynamicznych w powyższym pytaniu jest po prostu obj [test]. –