我有一种定义一个带有数组的对象的情况。出于某种原因,在我尝试使用之前,Chrome会向该对象添加工件。
我的对象:
var colorPalettes = {
single_A7DBD8: {
amounts: [100],
colors: ['#A7DBD8']
},
single_C02942: {
amounts: [100],
colors: ['#C02942']
}
}
当我运行代码时,控制台会显示var colorPalettes
的以下内容:
amounts: Array[1]
0: Object //<-- added by Chrome, 'value' should come directly in the array
order: 0
value: 100
valueOf: function (){return this.value}
__proto__: Object
length: 1
__proto__: Array[0]
colors: Array[1]
0: "#A7DBD8"
length: 1
__proto__: Array[0]
__proto__: Object
问题是:
amounts
在数组中有Object
? - 我没有定义它。colors
没有表现出相同的行为? 我尝试了什么:
colorPalettes
设置为window.something.colorPalettes
。我把它变成了一个局部变量 - 没有成功。 amounts
和colors
的顺序(我知道,我绝望了......) - 所以行为也交换了,现在colors
有额外的{{1} }}。Object
内没有额外的Object
。 编辑1:
我还尝试在colorPalettes
内放一个字符串,而不是当前的amounts
。
编辑2:
试图模拟在我的代码中添加jQuery点击事件,无法重现http://jsfiddle.net/2JfyX/19/
编辑3:
我相信我找到了罪魁祸首。这是g.Raphael。由于某种原因(还没有深入研究他们的代码),它会对我传递给它的对象进行更改
你可以看到我直接将int
传递给r.piechart,在第6个循环中它将我的数组更改为包含一个对象。不好:-O
我将从现在开始克隆数组并希望最好......
colorPalettes
有什么想法吗?谢谢, d。
答案 0 :(得分:0)
我刚在FireFox Firebug中运行此代码。我在对象上执行了console.log(),并显示了以下结果。
这几乎解释了整个情况。该对象内有两个嵌套对象 single_A7DBD8 和 single_C02942 这两个对象都包含两个数组。 “数量”和“颜色”。
正如你可以看到每个数组的+符号。它显示这些包含元素,我们可以扩展它们以查看数组的每个索引处的元素。
因此,如果要访问第一个对象中amount数组的第一个元素,请执行以下代码:
console.log(colorPalettes.single_A7DBD8.amounts[0]);
记住colorPalettes包含两个对象