JS – 如何将子对象添加到对象中
例如,
这是我的对象创作
var myObj = {};
如果我想增加价值在我的对象,我正在这样做。
myObj.name = 'User1'; myObj.role = 'CEO';
这可以。 对于我的node.js
项目场景,我需要将level.type
string对象传入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'}