如果 TJ Crowder 的假设是正确的,您可以执行以下操作:
obj1.prop1.prop1_1.prop1_1_1= [3]
obj2.prop1.prop1_1.prop1_1_1= obj1.prop1.prop1_1.prop1_1_1
现在如果你改变 obj2.prop1.prop1_1.prop1_1_1[0],obj1.prop1.prop1_1.prop1_1_1[0] 也会被改变。
这是因为当您将其定义为 [3] 时,它实际上创建了一个 Array 对象并将其引用(也称为指针)存储在 obj1.prop1.prop1_1.prop1_1_1 中,因此 obj1.prop1.prop1_1.prop1_1_1 和 obj2.prop1.prop1_1 都存在。 prop1_1_1 将对同一数组具有相同的引用。内存中只有一个数组,但是对它的两个引用,改变一个也会改变另一个。
如果您使用 obj1.prop1.prop1_1.prop1_1_1= 3,则在这种情况下,prop1_1_1 是一个原语,而不是对对象的引用。所以如果你说
obj1.prop1.prop1_1.prop1_1_1= obj2.prop1.prop1_1.prop1_1_1
它实际上会将值 3 复制到另一个变量,使其在内存中的两个不同位置保存值 3,并且更改一个不会更改另一个