如果知道这应该有效:
var object = {
property: "value"
}
var propertyname = "property";
var propertyvalue = object[propertyname];
但是当对象看起来像这样时,如何使用propertyname-variable获取属性值?
var object = {
anotherObject: {
property: "value"
}
}
var propertyname = "anotherobject.property";
var propertyvalue = object[propertyname]; // This should not work...
修改:根据建议,在这种情况下,属性名称可以拆分为“。”。但是,如果它是一个任意级别呢?我能以某种方式构造一个可以获得属性值的for循环吗?
答案 0 :(得分:2)
OP的代码无效,因为anotherObject.property
中没有名称为object
的媒体资源。有一个名为anotherObject
的属性,其值是一个名为property
的属性的对象。要实现这一目标,您必须访问这些连续级别的属性。
此代码拆分复合属性名称,然后执行连续的属性访问。
var nameArray = propertyname.split('.');
var propertyvalue = object;
for (var i = 0; i < nameArray.length; i++) {
propertyvalue = propertyvalue[nameArray[i]];
}