例如,
这是我的对象创建
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"
}
答案 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'}