如何防止此指针发生变化?

时间:2013-03-03 06:16:47

标签: javascript variables pointers backbone.js reference

        var oldView = currentView;
        currentView = new View();
        console.log(oldView) //oldView should point to the old one, not the new one.

1 个答案:

答案 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,所以它仍然附加到同一个对象。