2013-03-22 24 views
5

Ho bisogno di creare un nome di variabile variabile JS ...Variabile Variabile in 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); 

voglio il risultato di essere "1"

violino qui: http://jsfiddle.net/mR6BH/

+0

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

risposta

10

È necessario fare:

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

AWESO ME!!! Grazie!! –

+0

Fiddle aggiornato qui: http://jsfiddle.net/mR6BH/1/ –

+0

@MilkMan se questo ha risolto la tua domanda, si prega di impostare la risposta a "accettato" – GNi33

-1

generico 2 correzioni, ossia una soluzione più robusta

goops! anche ogni cosa come stringa !!!
Dal problema precedente sto estendendo objectname, propertyname per essere stringa Jang! ...

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

// provare alert (ottenere (ObjectName + + + + prova propertyName) "" "");

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; 
} 

Un altro

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

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

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

     return obj; 
    } 

Uso

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

non recommented Way

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

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

scusa, ma ... cosa? come è correlato alla domanda? – GNi33

+0

scusa per quello, sono pronto con una nuova risposta, come è? –

+0

L'uso di eval è una cattiva pratica. L'uso di eval quando Javascript supporta già le funzionalità direttamente (tramite l'accesso agli array) è ancora peggio. Un buon libro per imparare a scrivere correttamente Javascript è "Javascript: the good parts" di Douglas Crockford. Il modo corretto per accedere al test delle proprietà dinamiche nella domanda precedente è semplicemente obj [test]. –