var oldView = currentView;
currentView = new View();
console.log(oldView) //oldView should point to the old one, not the new one.
1 に答える
私のコメントを拡張するには:
C++の「参照」変数について考えていると思います。JavaScriptにはこれらがなく、ポインターもありません。
C ++のセマンティクスは、固定メモリ位置の概念に基づいて構築されていint foo;
ます。プログラムをどこかで4バイト保証します。 foo
常に同じ4バイトを参照します。次に、を使用してへの参照を作成するfoo
とint &bar = foo;
、bar
も常に同じ4バイトを参照します。一方の変数に割り当てられた値は、もう一方の変数から取得した値になります。
JavaScriptは、他の多くの動的言語と同様に、このようには機能しません。変数名は、オブジェクト間を移動するラベルのようなものであり、オブジェクトが存在する場所の正確な詳細は、あなたの仕事ではありません。したがって、ステップバイステップで、コードはこれを実行します。
var oldView = currentView;
名前を作成し、oldView
それを同じオブジェクトcurrentView
に貼り付けます。付箋のように。
currentView = new View();
新しいView
オブジェクトを作成し、そのオブジェクトに名前currentView
を付けます。これは;に影響を与えません。oldView
それはまったく別の名前ですが、それでも同じオブジェクトに固執しています。
console.log(oldView);
変更oldView
したことがないため、同じオブジェクトにアタッチされたままになります。