处理此名称空间JavaScript结构的最佳方法是什么?

处理此名称空间JavaScript结构的最佳方法是什么?,javascript,architecture,Javascript,Architecture,我有一个对象作为名称空间,有三个主要对象。我调用这个对象一次,然后它自己工作 我的代码的结构如下: var Application = Application || {}; Application.Module1 = { //Code with some functions } Application.Module2 = { //Code with some functions } Application.Module3 = { //Code with some function

我有一个对象作为名称空间,有三个主要对象。我调用这个对象一次,然后它自己工作

我的代码的结构如下:

var Application = Application || {};
Application.Module1 = {
//Code with some functions
}

Application.Module2 = {
   //Code with some functions
}

Application.Module3 = {
   //Code with some functions
}

(function(){
    Application.Module1.Start();
})();
主要是模块之间的工作。例如,当我在模块1中时,我想调用模块2中的函数,如:

Module2.randomFunction();
而不是:

Application.Module2.randomFunction();
但我认为去是个坏主意

Application.Module1.Start.call(Application)
因为我还使用了其他对象,比如jQuery


你认为什么是正确的方法?

你可以使用这样的模式-

var Application = (function() {
    var Module1 = {
        function1 : function() {
            console.log("function1");
            Module2.function2();
        }
    };

    var Module2 = {
        function2 : function() {
            console.log("function2");
        }
    };

    var Module3 = {
        function3 : function() {
            console.log("function3");
        }
    };

    return {
        Module1: Module1,
        Module2: Module2,
        Module3: Module3
    }
})();

Application.Module1.function1();

也许你可以这样做:。这不是最好的解决方案,但如果您必须多次调用某些Module2函数,这是一种简捷的方法。避免使用非构造函数。谢谢您的回答!这看起来像是我一直在寻找的图案@贝纳斯顿:到底是什么问题?@sibe94按惯例,如果变量与构造函数或常量相对应,则它们只能以大写字母开头。啊,好的,谢谢@杰巴特里克有这个图案的名字吗?我在找一份文件,据我所知不是。这是一种利用JS的闭包特性来完成您想要实现的名称空间组织的方法。JS是一种非常通用的语言,您可以完全控制想要遵循的构造/模式。