0

我对 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再次调用我的方法而不设置它时,它会在它停止的地方重新开始。我的印象是,当我将 count 方法设置n0.

为什么在我设置时count从中断的地方继续而不是被重置?0count

4

2 回答 2

3

你倒着做;)

function u0(n) {
    return {
        get count() { return ++n; },
        set count(m) { n = m; } // Notice? ;)
    };
}
于 2012-11-20T16:54:26.960 回答
1

您没有重置方法。我想你想要这个:

v0.count = 0;

我敢打赌你的v0对象现在看起来像这样:

v0 = {
    n: 14,
    reset: 0
};

另外,应该是

set count(m) { n = m; } // you had them backwards
于 2012-11-20T16:51:48.777 回答