从JSON设置本地JS变量的最佳方法是什么

时间:2011-02-01 00:51:14

标签: javascript

我想使用eval()执行以下操作。最好的方法是什么?

config: function(config) {
  for (var key in config) {
    if (config.hasOwnProperty(key)) {
      console.log('setting: ' + key + ' = ' + config[key]);
      eval(key + ' = "' + config[key] + '"');
    }
  }
}

1 个答案:

答案 0 :(得分:5)

你没有JSON。你有一个普通的JavaScript对象。您可以通过将全局变量设置为window对象的属性来创建全局变量的键(所有全局变量都是window对象的属性,并使用eval使它们成为全局变量):

window[key] = config[key];

但请注意,这可能会覆盖已设置的值甚至是nativ window属性。为避免这种情况,您可能希望首先测试该属性是否已存在:

if(!(key in window)) {
    window[key] = config[key];
}

由于全局变量不好,最好只将属性分配给定义config函数的对象。如果您使用this[key] = config[key]调用该函数,则为obj.config(someConfiguration)

无论如何,你必须将它们分配给某个对象。否则你不能将它们作为本地函数。最后,它取决于您希望能够访问配置值的 where