JS – 如何将子对象添加到对象中

例如,

这是我的对象创作

var myObj = {}; 

如果我想增加价值在我的对象,我正在这样做。

 myObj.name = 'User1'; myObj.role = 'CEO'; 

这可以。 对于我的node.js项目场景,我需要将level.typestring对象传入myObj

在这样的情况下,

 myObj.level.type = 'Level 1'; 

如何将level.type命名对象值添加到myObj

我不认为这可能会让你困惑。 我需要像这样的对象值,

  { "name": "User1", "role": "CEO", "level.type": "Level 1" } 

当附加一个子属性时,你只需要检查它是否已经设置,如果不是,就这样做。

 myObj.level = myObj.level || {}; myObj.level.type = 'Level 1'; 

如果它已经设置,这将防止重置myObj.level。

编辑

如果您需要传递一个包含点的属性名称,则必须引用它并使用括号表示法

 myObj['level.type'] = 'Level 1'; 

任何具有特殊字符的属性名称( – +等)也是如此。 键名在内部存储为string,只要引用它们,您不必担心隐式评估。

子对象必须先创build:

 myObj.level = {}; myObj.level.type = 'Level 1'; 

或更短:

 myObj.level = {type: 'Level 1'}; 

或者确实如果有一个机会level已经是myObj的孩子:

 myObj.level = myObj.level || {type: 'Level 1'}; 

总之,你可以像这样创buildmyObj

 var myObj = { name: 'User1', role: 'CEO', level: {type: 'Level 1'} }; 

并解决你的“误导”:

 var myObj = { name: 'User1', role: 'CEO', 'level.type': 'Level 1' }; 

myObj.level首先是未定义的,您需要将myObj.level作为对象初始化:

myObj.level = {type:'Level 1'}