JS - 如何将子项附加到对象中

时间:2014-08-19 11:52:29

标签: javascript node.js object

例如,

这是我的对象创建

var myObj = {};

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

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

这很好。对于我的node.js项目方案,我需要将level.type字符串对象传递给myObj

显然是这样的,

myObj.level.type = 'Level 1';

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

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

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

3 个答案:

答案 0 :(得分:6)

附加子属性时,您只需要检查它是否已经设置,如果不是,请执行此操作。

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

如果myObj.level已经设置,则会阻止重置myObj.level。

修改

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

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

同样适用于任何具有特殊字符的属性名称( - + etc)。密钥名称在内部存储为字符串,因此只要引用它们,您就不必担心隐式评估。

答案 1 :(得分:5)

必须首先创建子对象:

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

或更短:

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

或者确实如果level已经是myObj的孩子,那么

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

总而言之,您可以像这样创建myObj

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

并解决您的误导性问题

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

答案 2 :(得分:0)

myObj.level最初是未定义的 你需要将myObj.level初始化为一个对象:

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