对象内的对象使用JavaScript添加属性

时间:2012-02-26 16:58:36

标签: javascript

我在一个对象中有一个对象。它看起来像这样。

 var myLib = {
     object1: {}
 }

我的基本问题是我想这样结束。所以我想动态地做这个我在运行时之前不会知道属性或其他对象。

var myLib = {
    object1: ({"A1":({"Color":"Blue",
                      "height":50})
    })
}

通过阅读Stack Overflow,我知道我可以通过这样的方式在对象中创建一个对象:

  myLib.Object1["A1"] = "Something"

但这并不能产生我想要的东西。

我尝试了这种语法,我知道这是错误的,但基本上是

 mylib.Object1["A1"].["color"]="Blue";

所以基本上就是这个问题。我想在“mylib.Object”下创建对象“A1”,并立即将属性color =“blue”添加到“A1”。我需要为其他几个属性执行此操作,但如果我能弄清楚如何为一个属性执行此操作,我可以将其解决。我怎样才能完成这项任务?

请不要jQuery。只是简单的旧JavaScript是我正在寻找的。**

一旦我创建了对象和属性,我想我可以使用for循环来遍历该对象的属性。像这样:

for(key in mylib.Object1["A1"]){}

右?

1 个答案:

答案 0 :(得分:4)

您可以像这样从头开始创建:

var myLib = {};
myLib.object1 = {};

// assuming you get this value from your code somewhere
var x = "A1";   

myLib.object1[x] = {Color: "Blue", height: 50};

或者,如果所有值都在变量中:

var myLib = {};
myLib.object1 = {};

// assuming you get this value from your code somewhere
var x = "A1";   

var colorProp = "Color";
var colorPropValue = "Blue";
var heightProp = "height";
var heightPropValue = 50;
myLib.object1[x] = {};    // create empty object so we can then add properties to it
myLib.object1[x][colorProp] = colorPropValue;   // add one property
myLib.object1[x][heightProp] = heightPropValue; // add another property

这些语法会产生相同的结果:

myLib.object1.A1 = {};

var x = "A1";
myLib.object1[x] = {};

第一个只能在编写代码时知道属性名称时以及属性名称遵循javascript标识符的正确规则时使用。第二个可以在任何时候使用,但通常在属性名称在变量中或不遵循javascript标识符规则时使用(例如以数字开头)。