节点/ Javascript设置对象属性到数组不工作?

var arr = new Array(); arr[0] = "a"; var ob = new Object(); ob.prop = arr; ob.prop[0] = "b"; //Console log arr[0] returns b 

出于某种原因,更改ob.prop时,arr数组正在改变?

我错过了什么?

正如系统指出的那样, ob.prop = arr基本上只是提供另一个名字来访问arr引用的对象。 所以当你修改ob.prop你正在修改arr也指向的同一个对象。

编辑 :复制一个数组看看这个问题 :

 var arrCopy = arr.slice(); 

正如Jorge提到的,这是因为obj.prop只是对arr的引用,所以arrobj.prop将指向内存中的同一个地方。 所以,如果你改变,内存中的值(另一个指向)会改变,从而改变两者。

如果你想避免这个,你需要做一个深层次的复制 。 这会将数组的值复制到一个新的数组中, obj.prop将指向这个数组。

这里有一个在JavaScript中如何做到这一点的演练。