对象引用问题

时间:2012-02-18 12:30:48

标签: javascript object reference

我在JavasSript面临一个奇怪的问题。

有三个变量(声明为var),它们都存储一个对象;说var object1object2object3

好的,我现在所做的就是分配object2=object1object3=object1

当我向object2添加内容时,它会自动添加到object3。奇怪? :|

请帮忙。我想我在这里缺少一些基本的基础知识,但我无法理解它。

3 个答案:

答案 0 :(得分:2)

当你指定opject2 = object1时,你没有复制object1,你只是要求两个名称都引用同一个对象。您需要创建一个新对象并将object1中的属性复制到其中。如何执行此操作取决于您可以使用的Javascript库。

jQuery提供了复制技术described here

答案 1 :(得分:2)

那怎么这么奇怪?

您传递对象的引用并执行克隆对象。因此,对变量object1到object3的任何修改实际上都是指同一个对象,因此“自动更新所有变量”。

答案 2 :(得分:1)

您必须克隆对象或使用Object.create(object)函数并传递该对象,以便它将创建一个新的不分配引用的对象

查看图片

var obj1 = {key: 1}
var obj2 = Object.assign({},obj1)

enter image description here