js 閉包實(shí)現(xiàn)單例模式

在學(xué)習(xí)閉包的時(shí)候,想看看閉包如何來實(shí)現(xiàn)一個(gè)單例模式,可是發(fā)現(xiàn)網(wǎng)上百度出來的基本上用閉包實(shí)現(xiàn)的單例模式都是錯(cuò)誤的,大概都是copy來copy去的吧。下面是自己的實(shí)現(xiàn),大家可根據(jù)自己的需求在此基礎(chǔ)上變通以滿足自己的業(yè)務(wù)需求。
定義:

    (function  (global){
          function SimpleObj(){
                    var instance = null;
                    return function(){
                           if(instance == null){
                                      instance = {name:'simapleobj'}
                            }
                            return instance;
                  }
           }
           global.getInstance = SimpleObj();
    })(window)

調(diào)用:

    getInstance(); //{name: "simapleobj"}
    var a = getInstance();
    console.log(a); //{name: "simapleobj"}
    var b = getInstance();
    console.log(b); //{name: "simapleobj"}
    a.name = 'ACE';
    console.log(a); //{name: "ACE"}
    console.log(b); //{name: "ACE"}
    var c = getInstance();
    console.log(c);//{name: "ACE"}
    getInstance();//{name: "ACE"}
QQ20180302-115554@2x.png

閉包,記住兩點(diǎn):1.函數(shù)在當(dāng)前詞法作用域之外執(zhí)行;2.函數(shù)可以記住并訪問所在的詞法作用域。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式。簡單...
    舟漁行舟閱讀 8,110評(píng)論 2 17
  • 單例模式 適用場景:可能會(huì)在場景中使用到對(duì)象,但只有一個(gè)實(shí)例,加載時(shí)并不主動(dòng)創(chuàng)建,需要時(shí)才創(chuàng)建 最常見的單例模式,...
    Obeing閱讀 2,311評(píng)論 1 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • One could not count the moons that shimmer on her roofs. ...
    Candy俏麗麗閱讀 212評(píng)論 0 0
  • 一 “少公子!”“少公子!”“哎喲,少公子,公喚您多時(shí)了,您怎還在此處發(fā)呆呢?”說話這人名喚安,是少公子姬成的侍童...
    御神木下閱讀 1,114評(píng)論 17 19

友情鏈接更多精彩內(nèi)容