我的代码:
for( var i in zones) {
var latlons1 = new google.maps.LatLng(zones[i].b.cen_x, zones[i].b.cen_y);
var latlons2 = new google.maps.LatLng(zones[i].b.max_x, zones[i].b.max_y);
var latlons3 = new google.maps.LatLng(zones[i].b.min_x, zones[i].b.min_y);
obj1 = { zones[i].n = {1:latlons1,2:latlons2,3:latlons3} } //here object creation
console.log(obj1);
}
我做错了什么?控制台日志错误显示在对象创建。
答案 0 :(得分:6)
在JavaScript中创建对象文字时,键和值由冒号(:
)分隔。另请注意,如果要使用动态密钥,则需要使用方括号表示法来设置和访问这些属性。所以这个:
obj1 = { zones[i].n = {1:latlons1,2:latlons2,3:latlons3} }
应该成为:
obj1 = {};
obj1[zones[i].n] = {
1: latlons1,
2: latlons2,
3: latlons3
};
如果你对为什么必须这样做感到困惑,那是因为没有评估密钥。虽然您的意思是密钥应该是zones[i].n
引用的值,但JavaScript会将其解释为密钥应该是字符串文字"zones[i].n"
,这显然不是您想要的。
答案 1 :(得分:0)
要在对象中使用对象,
//An object within an object
var NestedObject=new Object();
NestedObject.one={
sad:{
d:"Add"
}
}
我在Codecademy.com中使用实验编码解决了这个问题。 谢谢你让我分享我的答案!