在范围javascript中按名称设置变量

时间:2016-04-26 09:56:03

标签: javascript function scope namespaces

我正在尝试用它的名字修改范围内的对象。我能想到的唯一解决方案是对新对象进行字符串化并使用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");

0 个答案:

没有答案