考虑一下我在 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”的字段?
我很困惑最终对象在内存中的真实样子。