有没有办法像这样访问JavaScript对象:
var a = {};
a.propertyA.propertyB;
其中a.propertyA
当然是undefined
,但我想写a.propertyA.propertyB
,假设a.propertyA
不是undefined
。如果a.propertyA
为undefined
,我希望a.propertyA.propertyB
也是undefined
。
我正在使用复杂的对象进行开发,所以有时候我想要一次访问具有多个属性的对象。我想知道有一种get
方法可以给出一个默认值。
提前谢谢。
答案 0 :(得分:1)
如果不首先使用字符串文字,确保它存在,或者必要时创建链,绝对没有办法做到这一点。
/**
* Define properties to be objects on a root object if they dont' exist
*
* @param o the root object
* @param m a chain (.) of names that are below the root in the tree
*/
function ensurePropertyOnObject(o, m)
{
var props = m.split('.');
var item;
var current = o;
while(item = props.shift()) {
if(typeof o[item] != 'object') {
current[item] = {};
}
current = o[item];
}
}
var a = new Object
ensurePropertyOnObject(a, "propertyA.propertyB");
a.propertyA.propertyB = "ho";
console.log(a);
答案 1 :(得分:-1)
尝试使用类似的东西:
function get(a){
if (a.propertyA === undefined){
a.propertyA = {propertyB: undefined};
}
else{
//do whatever with a.propertyA.propertyB
}
return a; //or whatever you'd like to return
}