我正在尝试用它的名字修改范围内的对象。我能想到的唯一解决方案是对新对象进行字符串化并使用eval来解析它并替换原始对象。这没有任何问题,但看起来不漂亮,JSON转换会给CPU带来不必要的负担。有没有更聪明的方法呢?谢谢!
var app = new (function() {
var test = {"value": "original"};
this.showTestValue = function(){
alert(test.value);
};
this.setVariable = function(key, value){
eval(key+"=JSON.parse('"+JSON.stringify(value)+"')");
}
})();
app.setVariable("test", {"value": "modified"});
app.showTestValue();
if(app.test !== undefined) alert("ERROR: Variable public");
if(typeof test !== "undefined") alert("ERROR: Global scope not clean");