我希望通過將其分割成不同的文件,併爲每個文件提供一個'sub'命名空間。Javascript命名空間
subA.js
if(typeof ex == "undefined") {
var ex = {};
}
ex.subA = function() {
//all functions of subA here
}
而同爲subB的等
目前,我有1個文件,ex.js
var ex = (function() {
//private vars/funcs
return {
//public vars/funcs
}
})();
它看起來像我應該將大部分函數移動到subA.js和subB.js,但在開始時仍然包含ex.js,其中包含subA.js和subB.js a fterwards。
我有很多問題。
我很難記住我是如何製作初始命名空間文件ex.js.它看起來像匿名函數是最初使所有內容都是私有的,但我不記得爲什麼它需要用圓括號括起來,然後直接用
();
執行。從q1開始,我的子文件應該與ex.js的格式相同,即將anon函數包裝在括號中並立即執行?
看起來子文件只能訪問
ex
的公共功能,這是真的嗎?如果是這樣,我怎樣才能讓我的子文件訪問私有函數呢?在我的HTML文件中,在我的document.ready函數(jQuery的),我應該初始化前變量或可我首先要
$(document).ready(function() { ex.doSomething(); ex.doSomethingElse(); }
單獨調用每個函數兩者有什麼不同?我認爲,當包含ex.js時,會立即創建一個全局變量ex(由於匿名函數會立即執行),所以我不需要在document.ready中重新定義它。
是第一個if語句在subA.js中與
var ex = ex || {};
有什麼不同嗎哪個更好?你用什麼js代碼風格標準?
如果你通讀了這一切,你已經得到了讚賞,歡呼聲。
你最好給你的'typeof'比較加引號,並刪除'!ex':'if(typeof ex ==「undefined」)''。 –
@Rob W不要一些瀏覽器返回爲空,而不是'undefined'?雅虎名稱間隔代碼使用!ex – Michael
當一個變量以前從未定義過時,'typeof'將返回'「undefined」'。但是,某些屬性在執行檢查時可以返回null('typeof null ===「object」')。 –