var oldView = currentView;
currentView = new View();
console.log(oldView) //oldView should point to the old one, not the new one.
问问题
67 次
1 回答
3
扩展我的评论:
我假设您正在考虑 C++“参考”变量。JavaScript 没有这些,也没有指针。
C++ 的语义是围绕固定内存位置的概念构建的:int foo;
保证您的程序在某处有四个字节。 foo
将始终引用相同的四个字节。如果您随后创建对with的引用,也将始终引用这四个字节。分配给一个变量的任何值都将是您从另一个变量获得的值。foo
int &bar = foo;
bar
JavaScript 和许多其他动态语言一样,不是这样工作的。变量名称更像是在对象之间移动的标签,对象所在位置的精确细节与您无关。所以,一步一步,你的代码会这样做:
var oldView = currentView;
创建一个名称,oldView
并将其粘贴到所粘贴的同一对象currentView
上。就像一个便利贴。
currentView = new View();
创建一个新View
对象,并在其上粘贴名称currentView
。这对;没有影响 oldView
那是一个完全不同的名字,仍然粘在同一个物体上。
console.log(oldView);
因为你从未改变过oldView
,所以它仍然附着在同一个对象上。
于 2013-03-03T06:32:16.397 回答