2013-03-03 82 views
-1
 var oldView = currentView; 
     currentView = new View(); 
     console.log(oldView) //oldView should point to the old one, not the new one. 
+0

什麼是currentView? – epascarello 2013-03-03 06:18:51

+0

它只是一個骨幹視圖(但沒關係) – TIMEX 2013-03-03 06:19:24

+1

如何做一個深層次的拷貝? – MimiEAM 2013-03-03 06:19:59

回答

3

爲了擴大對我的評論:

我想你想的C++「參考」變量。 JavaScript沒有這些,它也沒有指針。

C++的語義是圍繞固定內存位置的想法構建的:int foo;保證你的程序有四個字節。 foo將始終引用那些相同的四個字節。如果您創建參考fooint &bar = foo;bar也將始終指那些相同的四個字節。無論給一個變量分配什麼值,都將是您從另一個變量中獲得的值。

與其他許多動態語言一樣,JavaScript不能像這樣工作。變量名稱更像是在對象之間移動的標籤,而對象所在的確切詳細信息與您無關。所以,一步一步,你的代碼做這個:

var oldView = currentView; 

創建一個名稱,oldView,並堅持currentView粘在同一個對象。就像便條一樣。

currentView = new View(); 

創建一個新的View對象,並堅持它的名字currentView。這將對oldView無效;這是一個完全不同的名字,仍然堅持同一個對象。

console.log(oldView); 

因爲你從來沒有改變oldView,它仍然附着在同一個對象上。