为什么一个数组键中的设置值是在另一个键中设置的?

时间:2009-08-07 14:44:14

标签: javascript object

我有一个包含各种对象的对象数组来保存UI值。我想要一个按钮,以便元素0的值在整个数组中复制。但是我注意到设置一个设置它们。这是一个不使用任何循环的示例:

console.log('manual 3: ', lis[3].spacer.divider.type); // prints 'none'
lis[1].spacer.divider.type = 'bananas';
console.log('manual 3: ', lis[3].spacer.divider.type); // prints 'bananas'

我完全不知道设置lis [1]如何设置lis [3]

3 个答案:

答案 0 :(得分:0)

它们必须都是对同一对象的引用。

如果他们是DOM节点,您可以使用cloneNode()复制它们。 注意IE错误 - 它有一个不能正确克隆的习惯(例如克隆<select>不能维护selectedIndex)。

另请参阅What is the most efficent way to clone a JavaScript object?了解克隆对象。

答案 1 :(得分:0)

因为变量是引用变量并且它们都引用同一个对象,因此看起来更改一个会改变所有这些变量,实际上它们都是相同的底层对象。

如果你想要很多独特的数组,那么它们都应该被创建为一个新的或者是彼此的克隆。

答案 2 :(得分:0)

事实证明我引用了同一个对象。谢谢。它没有点击给我,因为上面的所有其他对象(spacer,lis)都是独一无二的。我不小心将divider设置为spacer的成员默认值而不是返回默认值的函数。

谢谢!