带有变量的Javascript点表示法

Jus*_*son 4 javascript arrays object

不知道怎么说这个.

我试图使用变量来确定钻入对象返回值的距离.

var target = "level1.level2.var";
var myObject = {
                    level1: {
                        level2: {
                            var: 'value'
                        }  
                    }
               }
var returnVal = myObject.target;
Run Code Online (Sandbox Code Playgroud)

怎么可以这样做?显然这不起作用.有可能是其他方式吗?

我想我可能必须爆炸目标var然后循环每个级别,但我想我会问是否有更容易的方式我可以忽略.

Pau*_*aul 9

你可以使用这个功能:

function get_property_from_target(obj, target){
    var arr = target.split('.');
    for(var i = 0; i < arr.length; i++){
        if(obj)
            obj = obj[arr[i]];
    }
    return obj;
}
Run Code Online (Sandbox Code Playgroud)

然后称之为:

get_property_from_target(myObject, target);
Run Code Online (Sandbox Code Playgroud)

我也将功能重命名为更好的功能.

另外请不要命名对象属性,var因为这是Javascript中的一个关键字,它可能会令人困惑,我不确定它是否总能以您期望的方式工作,或者它是否会在某些浏览器中导致错误.