Chrome のコンソールで試したこの簡単なコードを考えてみてください。
function Container() {
var secret = 3;
this.getSecret = function() {
return secret;
}
}
現在、次のコマンドを実行しても 3 を取得できません。
var c1 = new Container();
c1.secret //yields undefined
ただし、これは期待どおりに機能します
c1.getSecret() //returns 3
さて、これは私が試した風変わりなことです:
c1.secret = 10;
c1.getSecret(); //I was expecting it to return 10
ただし、3 が返されます。コンソールにオブジェクトが表示されると、次のようになります。
Container {getSecret: function, secret: 10}
c1.secret = 10 がオブジェクトの秘密のプライベート変数の値を変更しなかった理由を誰かが説明できますか? 「secret」という名前のフィールドが 2 つありますか?
最終的なオブジェクトがメモリ内で実際にどのように見えるか混乱しています。