1

我正在使用模块模式编写一个 javascript 框架,如下所示:

var EF = (function(doc) {

    // Main public object
    var e = {
        version: "1.0.0",
        doc: doc,
        log: true
    };

    // Private methods

    var method1 = function(el) {
        <some code>
    }

    var method2 = function(el) {
        <some code>
    }

    var method3 = function(el) {
        <some code>
    }


    // PUBLIC METHODS ASSIGNMENT

    e.method1 = method1;
    e.method2 = method2;
    e.method3 = method3;

    return e;

}(document));

现在我决定将一些方法移到单独的文件中。在开发过程中,我会在 HTML 文件中一个接一个地加载两个文件,而在部署时,我会将它们合并到一个文件中。

将部分方法移动到单独的文件以保持我使用的代码结构的正确方法是什么?

我在stackoverflow的一个答案中看到了以下建议:

var MODULE = (function (my) {
    var privateToThisFile = "something";

    // add capabilities...

    my.publicProperty = "something";

    return my;
}(MODULE || {}));

它看起来几乎就像我需要的一样,但它显示了文件和模块的私有方法。但是我需要模块的私有方法和模块的公共方法。

你会有什么建议?

4

1 回答 1

1

我不确定你到底想要什么,但我猜你想通过模块对象访问私有函数。本质上,它是指向私有属性的公共指针。

如果我能帮助你,请让我进一步了解。一个带有 jsFiddle 的问题示例会很棒。

var myRevealingModule = function () {

    var privateCounter = 0;

    function privateFunction() {
        privateCounter++;
    }

    function publicFunction() {
        publicIncrement();
    }

    function publicIncrement() {
        privateFunction();
    }

    function publicGetCount(){
      return privateCounter;
    }

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

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

}();

myRevealingModule.start();
于 2013-08-06T02:15:18.613 回答