Objek ada dalam beberapa cakupan, jadi Anda hampir selalu dapat mengakses variabel melalui sintaks ini:
var objname = "myobject";
containing_scope_reference[objname].some_property = 'some value';
Satu-satunya tempat di mana hal ini menjadi rumit adalah ketika Anda berada dalam cakupan tertutup dan Anda menginginkan akses ke variabel lokal tingkat atas. Ketika Anda memiliki sesuatu seperti ini:
(function(){
var some_variable = {value: 25};
var x = "some_variable";
console.log(this[x], window[x]);
})();
Anda dapat menyiasatinya dengan menggunakan evalalih - alih mengakses rantai cakupan saat ini ... tetapi saya tidak merekomendasikannya kecuali Anda telah melakukan banyak pengujian dan Anda tahu bahwa itulah cara terbaik untuk melakukan sesuatu.
(function(){
var some_variable = {value: 25};
var x = "some_variable";
eval(x).value = 42;
console.log(some_variable);
})();
Taruhan terbaik Anda adalah memiliki referensi ke nama dalam objek yang selalu akan ada (seperti thisdalam lingkup global atau variabel tingkat atas pribadi dalam lingkup lokal) dan meletakkan semua yang lain di sana.
Jadi:
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).