首頁 > web前端 > js教程 > 主體

學習JavaScript設計模式之單例模式_javascript技巧

WBOY
發布: 2016-05-16 15:19:16
原創
1076 人瀏覽過

一、定義

保證一個類別只有一個實例,並提供一個存取它的全域存取點。
當點擊登陸按鈕,頁面中出現一個登陸浮窗,這個登陸浮窗是唯一的,無論單擊多少次登陸按鈕,這個浮窗都只會被創建一次,那麼這個登陸浮窗就適合用單例模式來創建。

二、實現原理

要實現單例並不復雜,使用一個變數來標誌目前是否已經為某個類別建立過對象,如果是,則在下次取得該類別的實例時,直接傳回先前建立的物件。

三、假單例

全域變數不是單例模式,但在JavaScript開發中,我們常常會把全域變數當成單例來使用。

var a = {};

登入後複製

降低全域變數帶來的命名污染
(1)使用命名空間

var namespace1 = {
  a: function(){},
  b: 2
}
登入後複製

(2)使用閉包封裝私有變數

var user = (function() {
  var _name = 'lee',
    _age = '25';
  return {
    getUserInfo: function() {
      return _name + ":" + _age;
    }
  };
})();
登入後複製

四、惰性單例:在需要的時候才能建立物件實例

var getSingle = function(fn) {
  var result;
  return function() {
    return result || (result = fn.apply(this, arguments));
  };
};

// 测试
function testSingle(){}
getSingle(testSingle)() === getSingle(testSingle)();  // true

登入後複製

五、補充:

(1)懶加載

var lazyload = function() {
  console.log(1);
  lazyload = function() {
    console.log(2);
  }
  return lazyload();
}

lazyload();
登入後複製

(2)預先載入

var preload = (function() {
  console.log(1);
  preload = function() {
    console.log(2);
  };
  return preload;
})();

preload();
登入後複製

希望本文所述對大家學習javascript程式設計有所幫助。

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!