function testLet(){
var x=9;
return{
y:x,
getX: function(){
return ++x;
},
}
}
var obj = new testLet();
console.log(obj.y); //9 as expected
console.log(obj.getX()); //10 as expected
console.log(obj.getX()); //11 as expected
console.log(obj.y); //I expect it 11.. but it stays 9
为什么最后一行返回9而不是11,因为x在同一范围内?
答案 0 :(得分:1)
y:x
表示“将x
的当前值复制到属性y
”。
当时的值为9
。
对x
值的后续更改不会更改y
的值。
您可以更改getX
函数以修改this.y
,也可以将y
属性更改为getter函数,该函数读取x
的当前值。