我有2个javascript对象,其中一个包含当前值,另一个包含需要替换的值的键。
var values = {'instance': {'body' : {'background': '000000'}}};
var replace = {'scope':'instance', 'item':'body', 'property': 'background'};
var newValue = 'FFFFFF';
Values[replace.scope][replace.item][replace.property] = newValue;
如上所示,我可以'硬编码'替换,但有没有办法使用'replace'对象的map / loop动态创建替换,因为多维对象的深度可能不同?
答案 0 :(得分:0)
假设关于修改样式的示例是一个示例(否则我建议您使用jQuery来修改样式):
你可以这样做:
values.instance.body.background = newValue;
因此,如果替换实例被定义为它并且它甚至可以更深入,那么在这种情况下,您可以执行以下操作:
var path = "";
for(i = 0; i < replace.length; i++) {
path += "." + replace[i];
}
eval(path + " = " + "'" + newValue + "'");
//resulting in "values.instance.body.background = newValue" being executed;
干杯!