我在JavasSript中遇到了一個奇怪的問題。對象參考問題
有三個變量(聲明爲var
),它們都存儲一個對象;說var object1
,object2
和object3
。
好吧,我現在所做的是我分配object2=object1
和object3=object1
。
當我給object2
添加一些東西時,它會自動添加到object3
。奇怪? :|
請幫忙。我想我在這裏錯過了一些基本的基礎,但我無法抓住它。
我在JavasSript中遇到了一個奇怪的問題。對象參考問題
有三個變量(聲明爲var
),它們都存儲一個對象;說var object1
,object2
和object3
。
好吧,我現在所做的是我分配object2=object1
和object3=object1
。
當我給object2
添加一些東西時,它會自動添加到object3
。奇怪? :|
請幫忙。我想我在這裏錯過了一些基本的基礎,但我無法抓住它。
因此,如何是很奇怪嗎?
您通過引用該對象並做而不是克隆該對象。因此,將變量object1修改爲object3實際上是指同一個對象,從而「自動更新所有變量」。
當您指定opject2 = object1
時,您沒有製作object1的副本,只是要求兩個名稱都引用同一個對象。您需要創建一個新對象並將object1中的屬性複製到該對象中。你如何做到這一點取決於你有什麼樣的Javascript庫。
jQuery提供的複製技術described here
那麼,我已經做了如下所示:object3 = new Object(),然後object3 = object1。但問題仍然存在?如果我不知道對象的屬性,有什麼方法可以複製它?我有權訪問jquery 1.7.1;這可以幫助嗎? – Anupam 2012-02-18 12:37:58
對於所有類型的變量都不適用,請參閱@ katspaugh的答案。 – 2012-02-18 12:49:43
好的,Javascript中的一個'Object'通過引用傳遞。 'object2 = object1'改變'object2'變量來引用'object1'中的對象,它不會複製它。 – 2012-02-18 12:34:15
可能的重複[是否通過引用或值處理對象?](http://stackoverflow.com/questions/2267239/does-javascript-handle-objects-by-reference-or-by-value) – epascarello 2012-02-18 12:35:04
如何可以當object2被修改時,我確定object3不會被修改? – Anupam 2012-02-18 12:35:24