我想寫「好」 javascript中的模塊化。理解JavaScript的模式
下面是一個模式,我發現,並正嘗試採用。不過,我對它的使用有些困惑。
說,例如,我有一個名爲「作業」頁面。該網頁上的所有JS功能將在類似封裝:
window.jobs = (function(jobs, $, undefined){
return {
addNew: function(){
// job-adding code
}
}
})(window.jobs|| {}, jQuery);
$(function(){
$('.add_job').on('click', function(event){
event.preventDefault();
window.jobs.addNew();
});
});
你大概可以扣除,所有我所做的就是更換所有會坐在匿名事件處理函數中的代碼,用調用我的全局作業對象中的函數。我不知道爲什麼這是一件好事,除了減少了可變碰撞的可能性,並使整個事情變得更加整潔,但對我來說這足夠好。
的 - 可能是相當明顯的 - 問題是:我所有的事件結合的init-類型的東西仍然坐在外面我閃亮的新工作對象:應該在哪裏呢?在作業對象內部?作業對象內的返回對象內部?在init()函數中?
我只是想了解一個穩定的基本框架,用於放入簡單的功能。我沒有構建JS應用程序,我只想編寫比它更健壯,更易維護的代碼目前。任何和所有的建議熱烈歡迎:)
非常感謝您的非常有幫助的答案;我知道Crockfords和Osmanis以及Resigs有大量的信息,但這些概念與您自己的代碼有關的解釋會非常有幫助。我要將傑迪的迴應標記爲接受,因爲儘管我顯然無法說明哪一種方法是「正確」的解決方案,但他的回答似乎很好地解釋了我應該如何採用這種方法。 – Wintermute 2012-07-24 15:28:44