Javascript 使用模块模式更改私有方法中的公共变量

Javascript 使用模块模式更改私有方法中的公共变量,javascript,module-pattern,Javascript,Module Pattern,我有下一个代码: var Test = (function() { var counter = 0; var increaseCounter = function() { this.counter += 1; } increaseCounterPrivate = function() { // does not affect this.counter! // increaseCounter(); }

我有下一个代码:

var Test = (function() {
    var counter = 0;
    var increaseCounter = function() {
        this.counter += 1;
    }
    increaseCounterPrivate = function() {
        // does not affect this.counter! //
        increaseCounter();
    }
    var counterLogic = function() {
        // ... do something here ... //
        increaseCounterPrivate();
    }
    return {
        counter: counter,
        increaseCounter: increaseCounter,
        counterLogic: counterLogic
    };
});

var test = new Test();
test.increaseCounter();
console.log(this.counter); //1
test.counterLogic();
console.log(this.counter); //1 again, should be 2
上面的代码并没有意义(只是为了测试),但我想知道,一般来说,我是否可以调用public方法,它将调用private方法,而private方法最终将更改public变量。
如何将其重写以显示正确的值?

increaseCounterPrivate在全局范围内,因此当由counterLogic调用时,这指的是窗口。将第8行更改为
increaseCounter.call(this)和第12行到
递增对手方调用(此),那么它应该可以工作。