Javascript中的这个模块模式如何工作?

时间:2016-02-28 20:16:29

标签: javascript design-patterns

我正在学习模块模式,对它们的行为有点困惑。

所以,我有这个简单的模块,

var testModule = (function() {

    //private counter
    var counter = 0;
    return {
        //public methods
        incrementCounter: function () {
            console.log(counter++);
        },
        resetCounter: function () {
            counter = 0;
        }
    };
}());

从我理解到现在(如果我错了请纠正我),将立即调用上述函数(因为括号)。

运行时,它返回一个对象,该对象仅包含定义的公共方法。

所以,最后,在执行上述功能后,我们的代码看起来像内部 (如果我错了,请纠正我。这只是我对它的理解行为)

testModule_ = {
    incrementCounter: function () {
        return counter++; 
    },
    resetCounter: function () {
        console.log("counter value prior to reset: " + counter);
        counter = 0;
    }
};

我不理解的是,当我们访问公共方法时 testModule.incrementCounter()testModule.resetCounter(),他们如何获得counter的价值,因为testModule现在没有counter

我可以看到它第一次获得值,因为当匿名函数被自我调用时,它确实递增counter并重置值。但是第二次呢,它从counter的价值到哪里?

我希望我很清楚。提前谢谢。

0 个答案:

没有答案