返回显示模块模式

时间:2015-05-31 22:37:44

标签: javascript revealing-module-pattern

我在这里读到了关于揭示模块模式的Addy的书。但是,如果您执行示例代码,它实际上返回undefined。修复是在每个被调用函数之前添加'return'。如果使用RMP,我是否应该为每个被调用的函数添加返回值?这是使它运作的正确方法吗?我错过了什么?

var myRevealingModule = (function () {

        var privateCounter = 0;

        function privateFunction() {
            privateCounter++;  <--need to add return
        }

        function publicFunction() {
            publicIncrement(); <-- need to add return
        }

        function publicIncrement() {
            privateFunction();  <--need to add return
        }

        function publicGetCount(){
          return privateCounter;
        }

        // Reveal public pointers to
        // private functions and properties

       return {
            start: publicFunction,
            increment: publicIncrement,
            count: publicGetCount
        };

    })();

myRevealingModule.start(); <-return undefined 

http://addyosmani.com/resources/essentialjsdesignpatterns/book/#revealingmodulepatternjavascript

1 个答案:

答案 0 :(得分:2)

该问题与RMP无关,而是与函数和返回值无关。

为什么你会期望一个不返回任何内容的方法实际返回undefined以外的东西?

仔细看看这里。实际上start会调用publicFunction,但后者的主体不会返回任何内容。

然而,你称之为并期待一个价值。

您的问题的答案是:是的,如果您想要从函数返回值,则必须返回

在这个特例示例中,他们有一个方法count来返回当前值。另外两种方法仅用于控制计数器。