Javascript JS:动态创建不存在属性的子属性
我想要这样的东西:Javascript JS:动态创建不存在属性的子属性,javascript,Javascript,我想要这样的东西: var myObj = {}; myObj["a"]["b"].push({"c":"d"}); myObj['a'] = myObj['a'] || {}; 我希望myObj变成:{“a”:{“b”:[{“c”:“d”}}但是我得到了一个错误 无法设置未定义的属性“b” 是的,我知道我可以这样一步一步地创建它: var myObj={}; myObj["a"]={}; myObj["a"]["b"]=[]; myObj["a"]["b"].push({"c":"d"})
var myObj = {};
myObj["a"]["b"].push({"c":"d"});
myObj['a'] = myObj['a'] || {};
我希望myObj变成:{“a”:{“b”:[{“c”:“d”}}
但是我得到了一个错误
无法设置未定义的属性“b”
是的,我知道我可以这样一步一步地创建它:
var myObj={};
myObj["a"]={};
myObj["a"]["b"]=[];
myObj["a"]["b"].push({"c":"d"});
但是如果myObj已经有了一些结构,而我不想破坏它呢。例如:
var myObj={"a":{"e":"f"}};
如果我写myObj[“a”]={}代码>我将丢失数据。
我当然会写
if(myObj["a"]==null){
myObj["a"]={}
}
但它太笨重了!如果我可以编写smth,比如myObj[“a”][“b”].push({“c”:“d”})代码>不检查每个步骤是否为空。
有什么建议吗?有没有一种方法可以像那样覆盖JS原生对象或smth?
提前谢谢你 你不能。Netscape为大量代码道歉。为什么不是这个
var myObj = {};
myObj.a = {b:[{c:'d'}]};
你不能。Netscape为大量代码道歉。为什么不是这个
var myObj = {};
myObj.a = {b:[{c:'d'}]};
恐怕不可能像那样覆盖JS的本机功能
您必须检查子属性
如果要确保对象上存在属性,而不覆盖该属性,请执行以下操作:
var myObj = {};
myObj["a"]["b"].push({"c":"d"});
myObj['a'] = myObj['a'] || {};
这将myObj['a']
设置为自身(如果它有值),或者设置为新的空对象(如果它没有值)
然后对myObj['a']['b']
执行相同的操作,并按下按钮:
myObj['a']['b'] = myObj['a']['b'] || [];
myObj['a']['b'].push({"c":"d"});
恐怕不可能像那样覆盖JS的本机功能
您必须检查子属性
如果要确保对象上存在属性,而不覆盖该属性,请执行以下操作:
var myObj = {};
myObj["a"]["b"].push({"c":"d"});
myObj['a'] = myObj['a'] || {};
这将myObj['a']
设置为自身(如果它有值),或者设置为新的空对象(如果它没有值)
然后对myObj['a']['b']
执行相同的操作,并按下按钮:
myObj['a']['b'] = myObj['a']['b'] || [];
myObj['a']['b'].push({"c":"d"});
您可以简化检查->
myObj[“a”]=myObj[“a”]|{}
您可以简化检查->myObj[“a”]=myObj[“a”]|{
myObj.a={b:[{c:'d'}如果我已经有了myObj结构,我不想失去它。例如:myObj={“a”:{“E”:“f”}
您可能需要重新评估您的对象结构方法。你正在寻找的这个技巧对你不起作用。myObj.a={b:[{c:'d'}]}如果我已经有了myObj结构,我不想失去它。例如:myObj={“a”:{“E”:“f”}
您可能需要重新评估您的对象结构方法。你正在寻找的这个技巧对你不起作用。