问题描述
我有对象msg.data
,它包含:
{
"user_id": 1,
"success": "true"
}
我想在此列表中添加name
:
{
"user_id": 1,
"success": "true",
"name" : "giri"
}
我努力了:
msg.data.name = "giri";
但是当我打印出msg.data
,我总是得到初始结果。
有人知道这样做的正确方法吗?
1楼
我只是在控制台中试过这个,它对我有用:
msg = {};
msg.data = {
"user_id": 1,
"success": "true"
};
msg.data.name = "giri";
msg; //Since we're in the console, this will output the variable. Otherwise use console.log(msg) to output the contents.
确保没有拼写错误,并且没有其他任何内容正在修改对象。
在声明之前和之后执行console.dir
。
另外,请注意控制台当时可能会显示不正确的对象(如果您使用console.log
),因为它通过引用显示当前对象(在您查看控制台时可能会有所不同)。
您可以阅读文章,了解更多相关信息。
2楼
取决于typeof msg.data
。
如果它是一个对象,那么使用它添加更新的成员应该是直截了当的.
您可以按如下方式添加名称属性
msg.data.name = "haseeb";
如果它是一个json字符串,那么你需要将其解析为对象,然后使用添加属性.
var myobject = JSON.parse(msg.data);
myobject.name = "haseeb";
3楼
如果你正在使用
msg = {};
或msg.data = {}
它作为一个对象
并且您可以动态添加任何变量
msg.firstvar=""
msg.Secondvar=""
msg.Thirdvar=""
msg.data.firstvar=""
msg.data.Secondvar=""
msg.data.Thirdvar=""
4楼
这是一个简单的方法,
我假设变量是一个创建的动态对象,一个对ajax的响应
var msg = {
"user_id" : 1,
"success" : true
};
if (msg.name == undefined ) {
Object.defineProperty(msg, 'name', {
value : 'giri',
writable : false, // if you want the value to be change
enumerable : true // if you want the object to property to be iterated
});
}
另请阅读
5楼
但是当我打印出msg.data时,我总是得到初始结果。
意味着msg.data实际上并不存在,它产生“未定义”(最有可能)。
使用调试器(或在控制台中打印出来)msg的内容。