javascript:在对象中添加嵌套属性
javascript: add nested attribute in object
使用此示例对象:
obj = {
id: '123',
attr: 'something'
}
现在我想在属性data
中添加属性link
。有时data
已经存在,但在本例中data
不存在。
所以如果我做
obj.data.link = 'www.website.com';
我得到错误TypeError: Cannot set property 'link' of undefined
。
结果应该是:
obj = {
id: '123',
attr: 'something',
data: {
link: 'www.website.com'
}
}
您需要首先创建data
对象:
obj.data = {};
obj.data.link = 'www.website.com';
或者你可以一次完成所有操作:
obj.data = {
link: 'www.website.com'
};
如果data
可能在那里,也可能不在那里,有一个方便的快捷方式可以使用现有的快捷方式,如果没有,可以创建一个新的快捷方式:
obj.data = obj.data || {};
obj.data.link = 'www.website.com';
它使用了JavaScript功能强大得出奇的||
运算符。
您需要初始化数据属性。你可以这样做:
var obj = {
id: '123',
attr: 'something'
};
obj.data = {};
obj.data.link = 'www.website.com';
在现有属性的情况下,可以在指定链接之前进行检查。
if (!obj.data) {
obj.data = {};
}
正如在另一个答案中所说,你可以使用或运算符,我听说它"功能强大得出奇"=]
obj.data = obj.data || {};
这基本上意味着,如果这个值(obj.data)存在,就使用它,如果它不使用正确的操作数({})。这是因为短路评估。
Javascript从1.8.5开始,您可以使用以下方法:
Object.defineProperty(obj, "data", {
value: {'link' : 'www.website.com'},
writable: true,
enumerable: true,
configurable: true
});
祝你好运:)
相关文章:
- 将嵌套对象数据添加到窗体中
- 如何以编程方式添加到可变嵌套对象中
- 嵌套的主干视图未添加到DOM中
- Javascript对象/名称空间-如何访问从嵌套函数添加的属性(包括示例)
- 限制要在嵌套列表jQuery中添加的列表元素的数量
- 嵌套循环以添加数字
- 如何在使用具有嵌套视图的 ui 路由器时添加用户控制器
- 添加嵌套视图后代码停止工作
- 向嵌套对象添加属性 - Javascript
- 删除和添加嵌套对象中同一索引处的对象
- 重新思考DB,将元素添加到嵌套的数组中
- 如何使用角度 JS 添加嵌套的添加字段
- 添加嵌套引号
- 如何在Android中添加嵌套对象作为JavascriptInterface
- 如何添加嵌套的ul和li
- javascript:在对象中添加嵌套属性
- 使用Javascript为JSON添加嵌套键
- 在angular中如何向ng-repeat中添加嵌套对象
- 当使用现有的HttpProxy添加嵌套ajax调用时,远程过滤值不应用于网格
- 用JQuery添加嵌套窗体“;未捕获的SyntaxError:意外的令牌ILLEGAL“;