El objeto existe en algún ámbito, por lo que casi siempre puede acceder a la variable a través de esta sintaxis:
var objname = "myobject";
containing_scope_reference[objname].some_property = 'some value';
El único lugar donde esto se complica es cuando se encuentra en un ámbito cerrado y desea acceder a una variable local de nivel superior. Cuando tienes algo como esto:
(function(){
var some_variable = {value: 25};
var x = "some_variable";
console.log(this[x], window[x]);
})();
Usted puede conseguir alrededor de eso usando evalen lugar de acceder a la cadena de ámbito actual ... pero yo no lo recomendaría a menos que usted ha hecho un montón de pruebas y se sabe que esa es la mejor manera de hacer las cosas.
(function(){
var some_variable = {value: 25};
var x = "some_variable";
eval(x).value = 42;
console.log(some_variable);
})();
Su mejor opción es tener una referencia a un nombre en un objeto que siempre estará allí (como thisen el alcance global o una variable privada de nivel superior en un alcance local) y poner todo lo demás allí.
Así:
var my_outer_variable = {};
var outer_pointer = 'my_outer_variable';
(function(){
var my_inner_scope = {'my_inner_variable': {} };
var inner_pointer = 'my_inner_variable';
})();
alert(this === window).