-1
var oldView = currentView;
currentView = new View();
console.log(oldView) //oldView should point to the old one, not the new one.
var oldView = currentView;
currentView = new View();
console.log(oldView) //oldView should point to the old one, not the new one.
爲了擴大對我的評論:
我想你想的C++「參考」變量。 JavaScript沒有這些,它也沒有指針。
C++的語義是圍繞固定內存位置的想法構建的:int foo;
保證你的程序有四個字節。 foo
將始終引用那些相同的四個字節。如果您創建參考到foo
與int &bar = foo;
,bar
也將始終指那些相同的四個字節。無論給一個變量分配什麼值,都將是您從另一個變量中獲得的值。
與其他許多動態語言一樣,JavaScript不能像這樣工作。變量名稱更像是在對象之間移動的標籤,而對象所在的確切詳細信息與您無關。所以,一步一步,你的代碼做這個:
var oldView = currentView;
創建一個名稱,oldView
,並堅持currentView
粘在同一個對象。就像便條一樣。
currentView = new View();
創建一個新的View
對象,並堅持它的名字currentView
。這將對oldView
有無效;這是一個完全不同的名字,仍然堅持同一個對象。
console.log(oldView);
因爲你從來沒有改變oldView
,它仍然附着在同一個對象上。
什麼是currentView? – epascarello 2013-03-03 06:18:51
它只是一個骨幹視圖(但沒關係) – TIMEX 2013-03-03 06:19:24
如何做一個深層次的拷貝? – MimiEAM 2013-03-03 06:19:59