我想创建一个新对象,并为存储在某个json中的每个数组分配一些属性。我大部分时间都在工作除了..。
for (var i in json) {
a = 0;
a++;
a = new Object();
for (var key in json[i]) {
var Key = key;
var Value = json[i][key];
a[Key] = Value;
}
a.outputProperties();
}当我输出对象属性时,一切都是未定义的。
如果我在循环之外创建一个对象并将属性分配给它,它似乎工作正常,只是第一组属性被下面的代码覆盖了。不确定为什么我不能在循环中动态地创建对象和分配属性。
发布于 2010-09-15 05:10:43
Dave Smith的回答非常接近我所需要的,但是它没有在循环中创建新的对象。下面是我更新后的代码,它们提供了所需的结果:
for (var i in json) {
theGoods["obj"+i] = new Object();
for (var key in json[i]) {
theGoods["obj"+i][key] = json[i][key];
}
theGoods["obj"+i].outputProperties();
}现在,每个新对象都存储在一个数组theGoods[]中;我现在可以通过编写如下代码来引用该对象:theGoods["obj2"].someMethod();
发布于 2010-09-15 01:20:20
实际上,您从未设置过a的任何属性。您只需设置sup2的属性。顺便说一句,你还有其他不必要的东西,比如var Key = key;,试试这个:
for (var i in json) {
var a = new supplement();
for (var key in json[i]) {
a[key] = json[i][key];
}
a.outputProperties();
}发布于 2010-09-15 01:21:56
在我看来,你粘贴的代码看起来并不正确,从某种意义上说,它似乎没有结合在一起。
这三行代码是做什么的:
a = 0;
a++;
a = new supplement();你似乎用一个there做了三件矛盾的事情。我的猜测是,a应该是一个索引,指向一些你没有显示的外部事物。
那什么是
sup2应该是,和你之前做的补充物()有什么关系?
https://stackoverflow.com/questions/3711247
复制相似问题