在JavaScript中使用setter重置变量

时间:2012-11-20 16:48:51

标签: 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); //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

2 个答案:

答案 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