Если переменная находится в глобальной области видимости, вы можете получить доступ к нему как свойство глобального объекта
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
Однако, если это локальная переменная, единственный способ заключается в использовании eval
(disclaimer)
function() {
var a = "hello world";
var varName = "a";
console.log(this[varName]); // won't work
console.log(eval(varName)); // Does work
}
Если вы не можете поместить свои динамические переменные в объект и получить доступ к нему как свойство
function() {
var scope = {
a: "hello world";
};
var varName = "a";
console.log(scope[varName]); // works
}
Если это то, что вы думаете, что нужно, то не использовать переменные для хранения. Храните 'myObject' внутри другого объекта, используемого в качестве глобального пространства имен. 'var my_namespace = {}; my_namespace.myObject = new MyObject(); var myString = "myObject"; var itWorks = my_namespace [myString] .myproperty' –
@amnotiam Мой ответ детализирует ваш комментарий, трудно понять его из комментария. –
@ j08691 Принятый ответ на этот пост очень хакерский. Я бы не использовал его. –