2013-03-03 41 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,它仍然附着在同一个对象上。