0

私は JavaScript のゲッターとセッターにかなり精通していますが、現在の動作については少し混乱しています。これが私のコードです:

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 に答える