当前位置: 代码迷 >> JavaScript >> 如何动态添加到此对象
  详细解决方案

如何动态添加到此对象

热度:95   发布时间:2023-06-13 12:49:50.0

我有对象msg.data ,它包含:

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

我想在此列表中添加name

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

我努力了:

msg.data.name = "giri";

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

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

我只是在控制台中试过这个,它对我有用:

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 ),因为它通过引用显示当前对象(在您查看控制台时可能会有所不同)。 您可以阅读文章,了解更多相关信息。

取决于typeof msg.data 如果它是一个对象,那么使用它添加更新的成员应该是直截了当的. 您可以按如下方式添加名称属性

msg.data.name = "haseeb";

如果它是一个json字符串,那么你需要将其解析为对象,然后使用添加属性.

var myobject = JSON.parse(msg.data);
myobject.name = "haseeb";

如果你正在使用

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

并且您可以动态添加任何变量

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

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

这是一个简单的方法,

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

另请阅读

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

意味着msg.data实际上并不存在,它产生“未定义”(最有可能)。

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

  相关解决方案