使用什么JavaScript设计模式/常用做法来组织具有页面特定调用的多个函数

使用什么JavaScript设计模式/常用做法来组织具有页面特定调用的多个函数,javascript,jquery,object,design-patterns,optimization,Javascript,Jquery,Object,Design Patterns,Optimization,我有一个js文件,如下所示: $(document).ready() { // Mostly DOM manipulation operations functionOne(); functionTwo(); functionThree(); ... } (function( window, document, $, undefined) { var MyNamespace = {}; // Cache these to local s

我有一个js文件,如下所示:

$(document).ready() {
    // Mostly DOM manipulation operations
    functionOne();
    functionTwo();
    functionThree();
    ...
}
(function( window, document, $, undefined) {
    var MyNamespace = {};

    // Cache these to local scope
    MyNamespace.$window = $(window);
    MyNamespace.$document = $(document);

    // Functions
    MyNamespace.functionOne = function() {
        ...
    };

    MyNamespace.functionTwo = function() {
        ...
    };
})( window, window.document, window.jQuery );
我想要实现的是将所有函数封装和组织在一个对象中,并创建逻辑,以便它们只在特定页面上被调用。我开始写这样的东西:

$(document).ready() {
    // Mostly DOM manipulation operations
    functionOne();
    functionTwo();
    functionThree();
    ...
}
(function( window, document, $, undefined) {
    var MyNamespace = {};

    // Cache these to local scope
    MyNamespace.$window = $(window);
    MyNamespace.$document = $(document);

    // Functions
    MyNamespace.functionOne = function() {
        ...
    };

    MyNamespace.functionTwo = function() {
        ...
    };
})( window, window.document, window.jQuery );

我想知道我是否朝着正确的方向前进,是否有更好的方法来实现我还没有开始实现的页面特定逻辑(我已经有了一个页面标识符)。我已经看过了,唯一与我想要实现的类似的是命令模式,但我仍然不确定它是否是正确的选择。

您正在寻找的是一种普通OOP意义上的类。我个人使用以下模式:

var OPTIONS = {
    selectorA: '.js-xxx'
};

var MyClass = function(el) {
    this.el = el;
    this._init() // private function called
};

MyClass.prototype._init = function () {
    // Do some stuff
};

MyClass.prototype.publicFunction = function() {
    // Do exposable stuff here
}

window.instance = new MyClass(document.querySelect('#myElement'));

为了加载这些模块,您应该需要requireJS或其他AMD加载程序。

我认为AMD是共享脚本的最佳选择。