<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [toc] ## 單例模式(singleton-pattern) >在真實項目中,為了實現模塊化開發或則團隊協作開發,我們經常應用單例模式(一般業務邏輯部分的代碼都是依托單例模式設計規劃的) ### 單例模式的由來 很早以前,JS中都是值類型,沒有引用數據類型 ``` var name = '克里斯'; var age = 13; var sex = 'female'; var name = '安吉拉'; //會替換掉克里斯 var age = 6; //會替換掉13 var sex = 'unkonwn'; //會替換掉female ``` so,如果后面編寫的代碼,穿件的變量或則函數名和之前一樣,會把之前存儲的值替換掉。真實項目中,團隊協作開發,如果是這樣來處理,經常會導致彼此的代碼沖突(`全局變量污染`,`全局變量沖突`); 后來JS中又誕生了對象數據類型,解決了上面的污染或則沖突問題。 #### 對象數據類型 對象:把描述同一件事務的特征或則屬性,進行歸納匯總(放在一起),依次來避免全局變量之間的沖突。 ``` var person1 = { name:'克里斯' ,age:13 ,sex:'female' }; var person2 = { name:'安吉拉' ,age:6 ,sex:'unkonwn' }; person1.age person2.age ``` 單例模式就是一個破對象(從代碼角度來講) 我們把對象數據類型實現 把描述同一件事務的屬性或則特征匯總在一起,以此避免全局變量沖突問題的方式和思想叫做:`單例設計模式`。 #### 命名空間 singleton不僅僅是對象名了,在單例模式中,singleton稱之為 `命名空間(name-space)` 之所以叫這個名字, 對象類型會開辟一個空間,這個空間是個堆內存空間,它會返回一個地址,我們也可以把這個名字當做這個空間的名字,故稱之為命名空間。 ``` var singleton = { xxx:xxx, ... } ``` 把描述同一件事務的屬性或則方法存放在某一個命名空間下,多個命名空間中的屬性和方法是互不干擾的。 命名空間可以嵌套 ``` var singleton = { nameSpace1:{ xxx:xxx, ... } ,nameSpace2:{ xxx:xxx, ... } ... }; ``` ### 使用單例模式進行模塊化開發 >模塊化開發:在團隊協作開發的時候,我們經常會把一個復雜頁面,按照具體的功能劃分成為幾大塊,然后分別去開發,這種模塊劃分的思想就是模塊化開發思想。 > >真實項目中,我們可以使用單例模式(建議也是使用單例模式)來實現模塊化開發 ``` //=>項目主管(或則所有開發人員):公共模塊 var utils = { trim:function(){} }; //=>克里斯:搜索模塊 var searchModule = { submit:function(){ utils.trim(); } }; //=>安吉拉:天氣模塊 var weatherModule = { setWeather:function(){} }; //=>克里斯蒂娜:頻道模塊 var channelModule = { show:function(){ //=>在當前命名空間想要調取其它命名空間的方法:指定好對應的命名空間名字即可,使用[NameSpace].[property]就可以操作了 searchModule.submit(); //=>調取本模塊中的一些方法,可以直接使用THIS處理即可,此方法中的THIS一般都是當前模塊命名空間 //channelModule.setChannel(); this.setChannel(); } ,setChannel:function(){} }; channelModule.show(); ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看