Разделение пространства имен javascript на несколько файлов

Скажем, у меня такое пространство имен:

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

Каков наилучший способ разделить этот код на файлы, определяющие foo и bar отдельно?

Я не беспокоюсь о времени загрузки - я объединю его обратно в один файл перед развертыванием.

Ответы

Ответ 1

В начале каждого файла:

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

Файл 1:

myNamespace.foo = function()...

Файл 2:

myNamespace.bar = function()...

Ответ 2

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

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

Ответ 3

У меня нет ответа, чтобы добавить комментарий к eavicahy.

В каждом файле следуйте этому шаблону...

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

Таким образом, порядок загрузки неважен.

Ответ 4

Просто определите в отдельных файлах следующее:

Файл 1:

var myNamspace = {};

Файл 2:

myNamespace.foo = function()...

Файл 3:

myNamespace.boo = function()...

Просто убедитесь, что вы загружаете файлы в правильном порядке.

Ответ 5

(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);