如何动态添加到此对象

时间:2015-07-20 04:49:06

标签: javascript json

我有对象msg.data,其中包含:

{    
"user_id": 1,
"success": "true"
}

我想将name添加到此列表中:

{    
"user_id": 1,
"success": "true",
"name" : "giri"
}

我试过了:

msg.data.name = "giri";

但是当我打印出msg.data时,我总是得到初步结果。

有人知道这样做的正确方法吗?

5 个答案:

答案 0 :(得分: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),因为它会通过引用显示当前对象(在您查看时可能会有所不同)安慰)。您可以阅读this帖子以获取更多相关信息。

答案 1 :(得分:1)

取决于JOIN。如果它是一个对象,那么使用typeof msg.data添加更新成员应该很简单。您可以按如下方式添加名称属性

.

如果是json字符串,那么你需要将其解析为object,然后使用msg.data.name = "haseeb";

添加属性
.

答案 2 :(得分:1)

如果您正在使用

msg = {};msg.data = {}它作为对象

您可以动态添加任何变量

msg.firstvar=""
msg.Secondvar=""
msg.Thirdvar=""

msg.data.firstvar=""
msg.data.Secondvar=""
msg.data.Thirdvar=""

答案 3 :(得分:0)

这是一种简单的方法,

我假设变量是一个创建的动态对象, 对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
    });
}

另请阅读Object Define Property

答案 4 :(得分:0)

  

但是当我打印出msg.data时,我总是得到初始结果。

意味着msg.data实际上并不存在,它会产生" undefined" (最有可能的)。

使用调试器(或在控制台中打印出来)msg。

的内容