假设我有一个这样的命名空间:
var myNamespace = {
foo: function() {
},
bar: function() {
}
};
将此代码拆分为分别定义foo
和bar
的文件的最佳方法是什么?
我并不担心加载时间 - 我会在部署之前将其连接回一个文件。
答案 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);