基于JavaScript實現(xiàn)單例模式
首先,了解一下什么是單例模式,這里我直接把菜鳥教程中的定義給copy過來:
單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一。這種類型的設計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。
這種模式涉及到一個單一的類,該類負責創(chuàng)建自己的對象,同時確保只有單個對象被創(chuàng)建。這個類提供了一種訪問其唯一的對象的方式,可以直接訪問,不需要實例化該類的對象。
注意:
1、單例類只能有一個實例。
2、單例類必須自己創(chuàng)建自己的唯一實例。
3、單例類必須給所有其他對象提供這一實例。
用一句話來總結(jié)就是:在單例模式中,一個類僅有一個實例,并提供一個訪問它的全局訪問點。這無非是用一個變量來標志當前是否已經(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負責構(gòu)造對象,然后通過代理proxySingleton來判斷是構(gòu)造新的對象還是返回已有對象。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
前端CryptoJS加密、后端JAVA解密代碼實現(xiàn)參考
這篇文章主要介紹了前端CryptoJS加密、后端JAVA解密代碼實現(xiàn)參考,需要的朋友可以參考下2023-12-12JavaScript箭頭函數(shù)_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了JavaScript箭頭函數(shù)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06JavaScript實現(xiàn)點擊復制功能具體代碼(JS訪問剪貼板相關(guān))
這篇文章主要給大家介紹了關(guān)于JavaScript實現(xiàn)點擊復制功能(JS訪問剪貼板相關(guān))的相關(guān)資料,復制功能指的是將一個文本或者圖片等資源從一個位置通過復制的方式再次拷貝到另一個位置,需要的朋友可以參考下2023-10-10js getBoundingClientRect() 來獲取頁面元素的位置
該方法已經(jīng)不再是IE Only了,F(xiàn)F3.0+和Opera9.5+已經(jīng)支持了該方法,可以說在獲得頁面元素位置上效率能有很大的提高,在以前版本的Opera和Firefox中必須通過循環(huán)來獲得元素在頁面中的絕對位置。2010-11-11