-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