欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于JavaScript實(shí)現(xiàn)單例模式

 更新時(shí)間:2019年10月30日 09:27:11   作者:卑微小陳的隨筆  
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)單例模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

首先,了解一下什么是單例模式,這里我直接把菜鳥(niǎo)教程中的定義給copy過(guò)來(lái):

單例模式(Singleton Pattern)是 Java 中最簡(jiǎn)單的設(shè)計(jì)模式之一。這種類(lèi)型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式。

這種模式涉及到一個(gè)單一的類(lèi),該類(lèi)負(fù)責(zé)創(chuàng)建自己的對(duì)象,同時(shí)確保只有單個(gè)對(duì)象被創(chuàng)建。這個(gè)類(lèi)提供了一種訪問(wèn)其唯一的對(duì)象的方式,可以直接訪問(wèn),不需要實(shí)例化該類(lèi)的對(duì)象。

注意:

1、單例類(lèi)只能有一個(gè)實(shí)例。

2、單例類(lèi)必須自己創(chuàng)建自己的唯一實(shí)例。

3、單例類(lèi)必須給所有其他對(duì)象提供這一實(shí)例。

用一句話來(lái)總結(jié)就是:在單例模式中,一個(gè)類(lèi)僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。這無(wú)非是用一個(gè)變量來(lái)標(biāo)志當(dāng)前是否已經(jīng)為某個(gè)類(lèi)創(chuàng)建過(guò)對(duì)象,如果是,則在下一次獲取該類(lèi)的實(shí)例時(shí),直接返回之前創(chuàng)建的對(duì)象,在JavaScript我們很自然而然就會(huì)想到用閉包來(lái)解決這個(gè)問(wèn)題。

比如說(shuō)需要生成一個(gè)頁(yè)面登錄框,因?yàn)橛星抑豢赡苡幸粋€(gè)登錄框,那么你就可以用單例的思想去實(shí)現(xiàn)他,代碼如下:

let createLoginWindow = function(title) {
  this.title= title;
  this.init();
}

createLoginWindow.prototype.init = function() {
  // some code
  
}
let proxySingleton = (function() {
  var instance;
  return function(title) {
    if (!instance) {
      instance = new createLoginWindow(title);
    }
    return instance;
  }
})();
let windowA = new proxySingleton('login1');
let windowB = new proxySingleton('login2');

console.log(windowA === windowB); // true

可以看到,上述代碼中createLoginWindow負(fù)責(zé)構(gòu)造對(duì)象,然后通過(guò)代理proxySingleton來(lái)判斷是構(gòu)造新的對(duì)象還是返回已有對(duì)象。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • js自定義input文件上傳樣式

    js自定義input文件上傳樣式

    這篇文章主要為大家詳細(xì)介紹了js自定義input文件上傳樣式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 分享ES6的7個(gè)實(shí)用技巧

    分享ES6的7個(gè)實(shí)用技巧

    本文給大家分享了es6的7個(gè)實(shí)用技巧,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2018-01-01
  • jquery結(jié)合CSS使用validate實(shí)現(xiàn)漂亮的驗(yàn)證

    jquery結(jié)合CSS使用validate實(shí)現(xiàn)漂亮的驗(yàn)證

    這篇文章主要介紹了jquery結(jié)合CSS使用validate實(shí)現(xiàn)漂亮的驗(yàn)證,需要的朋友可以參考下
    2015-01-01
  • JS中setTimeout()的用法詳解

    JS中setTimeout()的用法詳解

    setTimeout( ) 是屬于 window 的 method, 但我們都是略去 window 這頂層物件名稱(chēng), 這是用來(lái)設(shè)定一個(gè)時(shí)間, 時(shí)間到了, 就會(huì)執(zhí)行一個(gè)指定的 method
    2013-04-04
  • javascript 模塊依賴(lài)管理的本質(zhì)深入詳解

    javascript 模塊依賴(lài)管理的本質(zhì)深入詳解

    這篇文章主要介紹了javascript 模塊依賴(lài)管理,結(jié)合實(shí)例形式深入分析了javascript 模塊依賴(lài)管理具體定義、實(shí)現(xiàn)方法及注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • 使用javascript為網(wǎng)頁(yè)增加夜間模式

    使用javascript為網(wǎng)頁(yè)增加夜間模式

    如何給Web頁(yè)面增加夜間模式功能? 其實(shí)所謂的夜間模式就是在頁(yè)面上增加一個(gè)透明的遮罩層,但是遮罩層會(huì)擋住頁(yè)面元素, 解決方法是 添加DIV,給DIV的outline屬性一個(gè)很大的outline-width值,用outline的邊框作為遮罩,這樣既能正常點(diǎn)擊頁(yè)面元素,又能達(dá)到夜間模式的效果
    2014-01-01
  • JS中模糊查詢功能的一些常用方法

    JS中模糊查詢功能的一些常用方法

    在前端開(kāi)發(fā)中,模糊查詢與下拉匹配是提高用戶體驗(yàn)的重要功能,特別是在搜索功能上,這篇文章主要給大家介紹了關(guān)于JS中模糊查詢功能的一些常用方法,需要的朋友可以參考下
    2024-06-06
  • 淺析document.createDocumentFragment()與js效率

    淺析document.createDocumentFragment()與js效率

    對(duì)于循環(huán)批量操作頁(yè)面的DOM有很大幫助!利用文檔碎片處理,然后一次性append,并且使用原生的javascript語(yǔ)句操作
    2013-07-07
  • JavaScript驗(yàn)證18位身份證號(hào)碼最后一位正確性的實(shí)現(xiàn)代碼

    JavaScript驗(yàn)證18位身份證號(hào)碼最后一位正確性的實(shí)現(xiàn)代碼

    這篇文章主要介紹了JavaScript驗(yàn)證18位身份證號(hào)碼最后一位正確性的實(shí)現(xiàn)代碼,小編親測(cè)有效,需要的朋友可以參考下
    2014-08-08
  • setInterval和setTimeout停止的方法

    setInterval和setTimeout停止的方法

    要想知道它們是怎么停止的,首先我們要了解它們的運(yùn)行機(jī)制和原理,下面是具體的介紹。
    2011-01-01

最新評(píng)論