在JavaScript中使用setter重置变量
我对JavaScript中的getter和setter非常熟悉,但我对当前得到的行为有点困惑。这是我的密码:在JavaScript中使用setter重置变量,javascript,Javascript,我对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); //1
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
时,为什么count
从它停止的地方开始,而不是被重置回0
?您没有重置方法。我想你想要这个:
v0.count = 0;
我打赌你的v0
对象现在看起来像这样:
v0 = {
n: 14,
reset: 0
};
而且应该是
set count(m) { n = m; } // you had them backwards
您没有重置方法。我想你想要这个:
v0.count = 0;
我打赌你的v0
对象现在看起来像这样:
v0 = {
n: 14,
reset: 0
};
而且应该是
set count(m) { n = m; } // you had them backwards
你在倒着做;)
你在倒着做;)
我看不到构造函数中定义了任何
reset
属性…它不应该是v0.count=0
?@maerics对此表示抱歉!我编辑了我的问题。我搞糊涂了。我没有看到构造函数中定义的任何reset
属性……它不应该是v0.count=0
?@maerics对此表示抱歉!我编辑了我的问题。我很困惑。@SethenMaleno哈哈,没关系,我们都会犯这种错误。@SethenMaleno哈哈,没关系,我们都会犯这种错误。