将JavaScript命名空间拆分为多个文件

时间:2011-03-01 03:15:52

标签: javascript namespaces code-organization

假设我有一个这样的命名空间:

var myNamespace = {
    foo: function() {
    },
    bar: function() {
    }
};

将此代码拆分为分别定义foobar的文件的最佳方法是什么?

我并不担心加载时间 - 我会在部署之前将其连接回一个文件。

5 个答案:

答案 0 :(得分:43)

在每个文件的开头:

if(myNameSpace === undefined) {
  var myNameSpace = {};
}

文件1:

myNamespace.foo = function()...

文件2:

myNamespace.bar = function()...

答案 1 :(得分:13)

// File1:
// top level namespace here:
var myNamespace = myNamespace || {};

// File2:
myNamespace.foo = function() {
    // some code here...
}

答案 2 :(得分:8)

在每个文件中都遵循以下模式:

(function(nameSpace) {
    nameSpace.foo = function() { ... };
})(window.nameSpace = window.nameSpace || {});

这样负载排序就不重要了。

答案 3 :(得分:2)

在单独的文件中进行简单定义,如下所示:

文件1:

var myNamspace = {};

文件2:

myNamespace.foo = function()...

文件3:

myNamespace.boo = function()...

请确保按正确的顺序加载文件。

答案 4 :(得分:1)

(function (NS) {
    NS.Uber = function Uber() {
        this.super = new NS.Super(); // yes, it works!
    }; //
}(NS = NS || {}));

// ------------- other file -----------------

(function (NS) {
    NS.Super = function Super() {
        this.uber = new NS.Uber(); // yes, it will also work!
    }; //
}(NS = NS || {}));

// -------------- application code ------------

var uber = new NS.Uber();
console.log(uber.super);

var super = new NS.Super();
console.log(super.uber);