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

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

 更新時間:2019年10月30日 09:27:11   作者:卑微小陳的隨筆  
這篇文章主要介紹了基于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)文章

最新評論