[英]javascript setting objects equal
这是我想要的方式,但我有点困惑为什么它的工作原理。
我有两个对象。 将temp对象设置为等于对象A并操纵临时对象。 对象A受到影响。
设置临时对象等于对象B(为什么现在不是所有三个对象都相等?)我操纵临时对象。 对象A不受影响。
var tempObject = {}; var objectA = {A: 1}; var objectB = {A: 3}; $( document ).ready(function() { tempObject = objectA; add(tempObject); console.log(objectA); tempObject = objectB; add(tempObject); console.log(objectA); function add(arr){ arr.A += 1; } });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
当您在JavaScript中处理对象时,它总是通过引用。 它类似于C / C ++中的指针。
将tempObject
设置为objectA
,基本上是说“tempObject现在指向与objectA相同的对象”。 因此,如果更改属性为1,则更改两者。
然后,当您将tempObject
设置为objectB
,您说“tempObject现在指向与objectB相同的对象”。 您没有使用此更改任何对象,只是tempObject
指向的对象。
将tempObject
设置为objectB
,它将不再是对objectA
的引用,现在引用objectB
。 因此,当您对tempObject
进行更改时, objectA
不受影响,但objectB
是。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.