:この一緒に行くことになりましたか?
あなたはobj
変数への新しい参照を代入しているが、それはあなたのconsole
コードが見ているものではありません。返すオブジェクトのobj
プロパティの参照を見ています。
myModule.obj
は内部obj
varへの参照ではありませんか?変数とプロパティとの間のリンクが存在しないその後
return {
obj: obj
// ...
}
コピープロパティに変数からオブジェクト参照、この
号。あなたのCALLTO updateObj
前に、ここであなたは(省略いくつかの無関係な内容で)メモリに持っているものだ
あなたがmyModule
を作成した後、:
+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+
| +−−−−−−−−−−−−−−−−−−−+ |
+−>| execution context | |
+−−−−−−−−−−−−−−−−−−−+ |
| obj: Ref11235 |−−−−−+ |
+−−−−−−−−−−−−−−−−−−−+ | |
| +−−−−−−−−+ |
+−−−−−−−−−−−−−−−−−−−−−+ +−−>| object | |
| variable "myModule" | | +−−−−−−−−+ |
+−−−−−−−−−−−−−−−−−−−−−+ | |
| obj: Ref11235 |−−−+ +−−−−−−−−−−−−−−−−−−−−−−−+ |
| updateObj: Ref88452 |−−−−−−>| function | |
+−−−−−−−−−−−−−−−−−−−−−+ +−−−−−−−−−−−−−−−−−−−−−−−+ |
| environment: Ref71423 |−−−+
| [[code] |
+−−−−−−−−−−−−−−−−−−−−−−−+
Ref11235がへのオブジェクト参照の値のためだけplaeholderですそのオブジェクト。 (同様Ref88452関数のオブジェクト参照であり、そしてRef71423は舞台裏「EnvironmentRecord」はupdateObj
機能はそれがその環境のobj
変数を更新することができへの参照を持つオブジェクトへのオブジェクト参照である。)
後updateObj
へのお電話は、あなたがmyModule
のobj
プロパティ内の参照を変更したが、それはobj
変数内の参照は変更されません:これは今、
+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+
| +−−−−−−−−+ |
| +−−−−−−−−−−−−−−−−−−−+ +−−>| object | |
+−>| execution context | | +−−−−−−−−+ |
+−−−−−−−−−−−−−−−−−−−+ | |
| obj: Ref11235 |−−−−−+ +−−−−−−−−−−−−+ |
+−−−−−−−−−−−−−−−−−−−+ | object | |
+−−>+−−−−−−−−−−−−+ |
+−−−−−−−−−−−−−−−−−−−−−+ | | foo: "bar" | |
| variable "myModule" | | +−−−−−−−−−−−−+ |
+−−−−−−−−−−−−−−−−−−−−−+ | |
| obj: Ref65243 |−−−+ +−−−−−−−−−−−−−−−−−−−−−−−+ |
| updateObj: Ref88452 |−−−−−−>| function | |
+−−−−−−−−−−−−−−−−−−−−−+ +−−−−−−−−−−−−−−−−−−−−−−−+ |
| environment: Ref71123 |−−−+
| [[code] |
+−−−−−−−−−−−−−−−−−−−−−−−+
唯一の変更があるmyModule.obj
の値を新しいオブジェクトを指します。
あなたの代わりに財産更新するupdateObj
を変更する場合:
updateObj: function(newObj) {
this.obj = newObj;
}
を...そして、あなたが期待する結果が表示されます。 (その時点で、obj
変数を完全になくすことはおそらく意味をなさないでしょう。)
私は間違っているかもしれませんが、素早く見て、あなたのかっこはオフかもしれません。 '(function(){...})()'ではないでしょうか? –
そこに文法エラーがあります。どこかで '予期しないトークン}'があります。 –
@SpencerWieczorekはい、 'obj = newObj、'カンマは ';'にする必要があります。 _Ignoring syntax errors – Tushar