javascript 如何在创建对象后将新对象添加到对象中

javascript how to add new object into object after it has been created

这是我的对象:

var example = {"119":{"bannerId":"119","overlay":"3","type":"1",...},"210":{"bannerId":"210","overlay":"3","type":"1",...},...}

通过这种方式,我可以非常轻松地访问或修改对象。例如,如果我想添加新的 属性,我只需调用它:

example[119].newProperty = 1;

而且很容易访问它:

alert(example[119].newProperty)
alert(example[210].type)

通过知道横幅 ID,我可以从任何代码范围访问任何数据,这就是我选择这种模式的原因。问题是我需要在创建后在 example 中添加新对象。例如,我需要将其推入示例中: {"30":{"bannerId":"119","overlay":"3","type":"1",...}}

而且我不知道这是否可能。是吗?解决这个问题的一种方法是使用数组,所以示例是数组,每个键都带有对象,我可以将带有对象的新键推入数组。但我不确定这是否是正确的方法,因为键将以 200、300 开头,... console.log(example) 显示 200 之前的所有键都未定义。有这么多空键可以吗?还有其他更好的方法吗?

编辑:

我意识到这也可以用对象来完成。问题是因为我试图将 new 属性 直接分配给 new 对象,如下所示:

example[200].example3 = 2;

猜测创建示例对象就足够了。我缺少的是这一行:

example[200] = {}

感谢您的回答,现在可以使用了!

example[30] = {"bannerId":"119","overlay":"3","type":"1",...};
var example = {};

example["30"] = {"bannerId":"119","overlay":"3","type":"1"}

console.log(example);

如果它在一个循环中,你也可以尝试下面的方法。

var i = 0;
var example = {};
for (i=0; i<10; i++) {
  example[i] = {bannerId : i+1 , someOtherItem : i + "Hello"}
}

console.log(example);

您始终可以访问(和分配)对象的临时键,即使您没有首先定义它们。

因此对于您的示例,您可以这样做:

example["30"] = {... /*your new object*/...} 

看来你想扩展你的对象,你可以使用 jQuery 或者下划线或多或少像这样:

$.extend(true, example, { "30": { objectId: "201" }}); // deep copy

如果您不想使用任何库,只需执行以下操作:

example["30"] = myObj["30"];