我非常熟悉JavaScript中的getter和setter,但我对我目前所获得的行为感到困惑。这是我的代码:
function u0(n) {
return {
get count() { return ++n; },
set count(m) { m = n; }
}
}
v0 = u0(10); //start with 10
console.log(v0.count); //11: increase by 1
console.log(v0.count); //12: increase by 1
console.log(v0.count); //13: increase by 1
console.log(v0.count = 0); //set back to 0
console.log(v0.count); //14?
当我调用count
方法并设置它时,它会将计数重置为零,但是当我再次调用我的count
方法而不设置它时,它会在它停止的地方向右移动。我的印象是,当我设置计数方法时,它会将n
设置为0
。
为什么count
会从停止的位置开始提取,而不是在我设置0
时重置回count
?
答案 0 :(得分:3)
你正在倒退;)
function u0(n) {
return {
get count() { return ++n; },
set count(m) { n = m; } // Notice? ;)
};
}
答案 1 :(得分:1)
您没有重置方法。我想你想要这个:
v0.count = 0;
我打赌你的v0
对象现在看起来像这样:
v0 = {
n: 14,
reset: 0
};
此外,它应该是
set count(m) { n = m; } // you had them backwards