var oldView = currentView;
currentView = new View();
console.log(oldView) //oldView should point to the old one, not the new one.
答案 0 :(得分:3)
扩展我的评论:
我假设您正在考虑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
,所以它仍然附加到同一个对象。