之前可能会问过,但我没有看到这个问题:
有没有办法在javascript中声明一个对象,以便我可以直接在多个嵌套级别中分配值(而不是沿途声明每个级别)?
示例:
var obj = {};
obj["key1"]["key2"]["key3"] = "value";
obj["key1"]["key4"]["key5"] = "value2;
以上对我来说不起作用,但由于我是动态创建对象的,因此我必须首先检查是否存在,因此为每个密钥创建每个级别都会很昂贵。
即:
if (!obj["key1"]) obj["key1"] = {};
elseif (!obj["key1"]["key2"]) !obj["key1"]["key2"] = {};
... etc
我希望这是有道理的。
答案 0 :(得分:0)
这样做是没有意义的。
我确信你需要一个非常特殊的情况,所以我建议你检查你的目的并使用帮助函数。
例如,setProperty(targetObj, path, value)
其中path
是['key1', 'key2']
之类的普通列表,因此您可以检查是否存在。
此外,如果有意义,您可以组合一组键。像obj[key1 + '_' + key2]
一样。在这种情况下编写辅助getter和setter也很容易。
P.S。再一次,你真的不想那样走。如果必须通过一组键访问值,则可能是一个组合键。不要让它变得复杂。