我想使用eval()执行以下操作。最好的方法是什么?
config: function(config) {
for (var key in config) {
if (config.hasOwnProperty(key)) {
console.log('setting: ' + key + ' = ' + config[key]);
eval(key + ' = "' + config[key] + '"');
}
}
}
答案 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 。