JavaScript:访问具有未定义属性的对象

时间:2016-09-08 03:43:02

标签: javascript

有没有办法像这样访问JavaScript对象:

var a = {};
a.propertyA.propertyB;

其中a.propertyA当然是undefined,但我想写a.propertyA.propertyB,假设a.propertyA不是undefined。如果a.propertyAundefined,我希望a.propertyA.propertyB也是undefined

我正在使用复杂的对象进行开发,所以有时候我想要一次访问具有多个属性的对象。我想知道有一种get方法可以给出一个默认值。

提前谢谢。

2 个答案:

答案 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
}