比方說,我有一個這樣的命名空間:拆分一個javascript命名空間分割成多個文件
var myNamespace = {
foo: function() {
},
bar: function() {
}
};
什麼是拆分此代碼爲限定了分別foo
和bar
文件的最好方法?
我不擔心加載時間 - 我會在部署之前將它連接回一個文件。
比方說,我有一個這樣的命名空間:拆分一個javascript命名空間分割成多個文件
var myNamespace = {
foo: function() {
},
bar: function() {
}
};
什麼是拆分此代碼爲限定了分別foo
和bar
文件的最好方法?
我不擔心加載時間 - 我會在部署之前將它連接回一個文件。
在每個文件的開始:
if(myNameSpace === undefined) {
var myNameSpace = {};
}
文件1:
myNamespace.foo = function()...
文件2:
myNamespace.bar = function()...
簡單的單獨的文件中這樣定義:
文件1:
var myNamspace = {};
文件2:
myNamespace.foo = function()...
文件3:
myNamespace.boo = function()...
只要確保你以正確的順序加載文件。
// File1:
// top level namespace here:
var myNamespace = myNamespace || {};
// File2:
myNamespace.foo = function() {
// some code here...
}
(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);
在每個文件中遵循以下模式:
(function(nameSpace) {
nameSpace.foo = function() { ... };
})(window.nameSpace = window.nameSpace || {});
這種方式的加載順序並不重要。
投了一個好問題!教我好東西。 – 2013-01-15 07:08:23
也提到在:http://stackoverflow.com/a/4130511/895245 – 2016-10-18 12:37:08