JavaScript使用带有单个字符串的括号表示法设置嵌套属性

时间:2015-08-06 10:01:49

标签: javascript object

我有一个嵌套的javascript对象

var x={
    y1:{
        z1:"some value 4 y1z1",
        z2:"some value 4 y1z2",
    },
    y2:{
        z1:"some value 4 y2z1",
        z2:"some value 4 y2z2",
    }
}

现在我有一个函数来通过将字段名称作为字符串和值传递来更改此对象的属性,如下所示。

function setproperty4X(field,value){
    x[field]=value;
}

但是如果我给出一个2级深的属性名来更新值,它就不会设置更深层属性的值,而是创建一个新属性。 例如,如果我给“y1.z1”代替如果在x中设置y1的z1,则在x中创建属性y1.z1。有关详细信息,请参阅以下代码另外see this fiddle

setproperty4X("y1.z1","new value for y1.z1");

console.log(x.y1.z1) // doesn't reflect the new value.
console.log(x['y1']['z1']); // neither does this

console.log(x['y1.z1']) // but this shows the new value

0 个答案:

没有答案