在JavaScript中使用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

我对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
时,为什么
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哈哈,没关系,我们都会犯这种错误。