Nesne bir kapsamda mevcuttur, bu nedenle bu sözdizimi aracılığıyla değişkene neredeyse her zaman erişebilirsiniz:
var objname = "myobject";
containing_scope_reference[objname].some_property = 'some value';
Bunun zorlaştığı tek yer, kapalı bir kapsamda olduğunuz ve üst düzey bir yerel değişkene erişmek istediğiniz zamandır. Böyle bir şeye sahip olduğunuzda:
(function(){
var some_variable = {value: 25};
var x = "some_variable";
console.log(this[x], window[x]);
})();
Sen edebilirsiniz kullanarak etrafında olsun evalgeçerli kapsamı zincirini erişmek için yerine ... ama test bir sürü yaptık ve sürece bunu önermiyoruz biliyorum o şeyleri ele almak için en iyi yol olduğunu.
(function(){
var some_variable = {value: 25};
var x = "some_variable";
eval(x).value = 42;
console.log(some_variable);
})();
En iyi bahsiniz, her zaman orada olacak bir nesnede ( thisküresel kapsamda veya yerel kapsamdaki özel bir üst düzey değişken gibi ) bir isme referans vermek ve diğer her şeyi oraya koymaktır .
Böylece:
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).