O objeto existe em algum escopo, então você quase sempre pode acessar a variável por meio desta sintaxe:
var objname = "myobject";
containing_scope_reference[objname].some_property = 'some value';
O único lugar onde isso fica complicado é quando você está em um escopo fechado e deseja acessar uma variável local de nível superior. Quando você tem algo assim:
(function(){
var some_variable = {value: 25};
var x = "some_variable";
console.log(this[x], window[x]); // Doesn't work
})();
Você pode contornar isso usando evalpara acessar a cadeia de escopo atual ... mas não recomendo, a menos que você tenha feito muitos testes e saiba que essa é a melhor maneira de fazer as coisas.
(function(){
var some_variable = {value: 25};
var x = "some_variable";
eval(x).value = 42;
console.log(some_variable); // Works
})();
Sua melhor aposta é ter uma referência a um nome em um objeto que sempre estará lá (como thisno escopo global ou uma variável de nível superior privada em um escopo local) e colocar todo o resto lá.
Portanto:
var my_outer_variable = {};
var outer_pointer = 'my_outer_variable';
// Reach my_outer_variable with this[outer_pointer]
// or window[outer_pointer]
(function(){
var my_inner_scope = {'my_inner_variable': {} };
var inner_pointer = 'my_inner_variable';
// Reach my_inner_variable by using
// my_inner_scope[inner_pointer]
})();
alert(this === window).