我在JavasSript中遇到了一个奇怪的问题。
有三个变量(声明为var),它们都存储一个对象;比如var object1、object2和object3。
好的,我现在要做的就是赋值object2=object1和object3=object1。
当我向object2添加内容时,它会自动添加到object3中。奇怪?:|
请帮帮忙。我想我在这里遗漏了一些基本的基础知识,但我无法理解它。
发布于 2012-02-18 20:34:56
那么这有什么奇怪的呢?
您将引用传递给对象,并且不克隆对象,而不是克隆对象。因此,将变量object1修改为object3实际上引用了同一个对象,因此“自动更新所有变量”。
发布于 2012-02-18 20:34:53
当您指定opject2 = object1时,您并不是在复制object1,而是简单地要求这两个名称引用同一个对象。您需要创建一个新对象,并将object1中的属性复制到其中。如何做到这一点取决于您有哪些Javascript库可用。
jQuery提供复制技术described here
发布于 2020-06-05 18:17:49
您必须克隆对象或使用Object.create( object )函数并传递对象,以便它将创建一个新的对象,而不是分配引用
查看图片
var obj1 = {key: 1}
var obj2 = Object.assign({},obj1)

https://stackoverflow.com/questions/9341159
复制相似问题