我在一个对象中有一个对象。它看起来像这样。
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"]){}
右?
答案 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标识符规则时使用(例如以数字开头)。