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行到递增对手方调用(此)代码>,那么它应该可以工作。