[英]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.