我有一个包含各种对象的对象数组来保存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]
答案 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的成员默认值而不是返回默认值的函数。
谢谢!