Si la variable está en el ámbito mundial, se puede acceder a él como una propiedad del objeto global
var a = "hello world";
var varName = "a";
console.log(window[varName]); // outputs hello world
console.log(this[varName]); // also works (this === window) in this case
Sin embargo, si se trata de una variable local, la única manera es utilizar eval
(disclaimer)
function() {
var a = "hello world";
var varName = "a";
console.log(this[varName]); // won't work
console.log(eval(varName)); // Does work
}
a menos que usted puede poner sus variables dinámicas en un objeto y acceder a ella como una propiedad
function() {
var scope = {
a: "hello world";
};
var varName = "a";
console.log(scope[varName]); // works
}
Si esto es lo que cree que necesitará, entonces no utilizar variables para su almacenamiento. Almacene 'myObject' dentro de otro objeto utilizado como espacio de nombre global. 'var my_namespace = {}; my_namespace.myObject = new MyObject(); var myString = "myObject"; var itWorks = my_namespace [myString] .myproperty' –
@amnotiam Mi respuesta detalla de qué está hablando su comentario, es difícil de entender por un comentario. –
@ j08691 La respuesta aceptada en esa publicación es muy hackish. No lo usaría –