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

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

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

首先,了解一下什么是單例模式,這里我直接把菜鳥教程中的定義給copy過來:

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

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

注意:

1、單例類只能有一個實例。

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

3、單例類必須給所有其他對象提供這一實例。

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

比如說需要生成一個頁面登錄框,因為有且只可能有一個登錄框,那么你就可以用單例的思想去實現(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)造對象,然后通過代理proxySingleton來判斷是構(gòu)造新的對象還是返回已有對象。

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

相關(guān)文章

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

    js自定義input文件上傳樣式

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

    分享ES6的7個實用技巧

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

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

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

    JS中setTimeout()的用法詳解

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

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

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

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

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

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

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

    淺析document.createDocumentFragment()與js效率

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

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

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

    setInterval和setTimeout停止的方法

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

最新評論