Das Objekt ist in einem bestimmten Bereich vorhanden, sodass Sie fast immer über diese Syntax auf die Variable zugreifen können:
var objname = "myobject";
containing_scope_reference[objname].some_property = 'some value';
Der einzige Ort, an dem dies schwierig wird, ist, wenn Sie sich in einem geschlossenen Bereich befinden und Zugriff auf eine lokale Variable der obersten Ebene wünschen. Wenn Sie so etwas haben:
(function(){
var some_variable = {value: 25};
var x = "some_variable";
console.log(this[x], window[x]); // Doesn't work
})();
Sie können dies umgehen, indem Sie evalstattdessen auf die aktuelle Bereichskette zugreifen ... aber ich empfehle es nicht, es sei denn, Sie haben viele Tests durchgeführt und wissen , dass dies der beste Weg ist, um Dinge zu erledigen .
(function(){
var some_variable = {value: 25};
var x = "some_variable";
eval(x).value = 42;
console.log(some_variable); // Works
})();
Ihre beste Wette ist , einen Verweis auf einen Namen haben , in einem immer-going-to-be-es - Objekt (wie thisim globalen Bereich oder ein privates Top-Level - Variable in einem lokalen Bereich) und setzte alles anderes drin.
So:
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).