JavaScript設計模式-單例模式

jopen 10年前發布 | 20K 次閱讀 JavaScript開發 JavaScript

在js中使用單例模式可以防止名稱沖突,也便于統一管理js。

/study/

/**

  • 使用單例模式創建一個應用程序名稱空間
  • 調用$(document).ready(myApp.init) */ var myApp = { //初始化 init : function(){}, dshboard : function(){}, controlPanel : function(){}, appSettings : function(){} }

/**

  • 根據開發人員和網站結構,拆分單個單例模式。 這樣開發人員負責自己的js文件,便于管理,防止沖突。
  • 等到開發完成之后再把多個js文件合成一個js文件。減少與客戶端的http連接次數。
  • */ //一個站點一個js命名空間 var myApp = { //common包含項目的通用代碼,由主管負責 common : {
     init : function(){}
    
    } } //程序員A負責dashboard myApp.dashboard = { init : function(){
     ....
    
    }, func1 : function(){}, func2 : function(){} } //程序員B負責controlPanel myApp.controlPanel = { ... }

/**

  • Module模式
  • 由yahoo首席js架構師 Douglas Crockford 發明 *
  • 特點:
  • 相對于單例模式,增加私有方法,私有屬性的功能。
  • 是一個自動執行的函數,也就是創建的時候返回公有方法和屬性的對象 */ var myApp = function(){ //私有變量和方法 var privateVarible = 1; var privateFunction = function(){};

    //返回對象包含公有屬性和對象 return { init : function(){}, publicVariable : 42, publicFunction : function(){

    //invoke private function or varible
    privateFunction();
    

    } } }(/自動調用/);

//擴展Module模式 myApp.ExtendModul = function(){ //私有的部分 //返回公有 return { ... } }();

/**

  • Garber-lrish模式
  • 這個模式提供一個簡潔的工具,為在$(function(){})中運行的代碼提供一個統一的、可伸縮、可維護的方法
  • [= = ! 好像用處不大] */</pre></span>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!