我在JavasSript面临一个奇怪的问题。
有三个变量(声明为var
),它们都存储一个对象;说var object1
,object2
和object3
。
好的,我现在所做的就是分配object2=object1
和object3=object1
。
当我向object2
添加内容时,它会自动添加到object3
。奇怪? :|
请帮忙。我想我在这里缺少一些基本的基础知识,但我无法理解它。
答案 0 :(得分:2)
当你指定opject2 = object1
时,你没有复制object1,你只是要求两个名称都引用同一个对象。您需要创建一个新对象并将object1中的属性复制到其中。如何执行此操作取决于您可以使用的Javascript库。
jQuery提供了复制技术described here
答案 1 :(得分:2)
那怎么这么奇怪?
您传递对象的引用并执行不克隆对象。因此,对变量object1到object3的任何修改实际上都是指同一个对象,因此“自动更新所有变量”。
答案 2 :(得分:1)