麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

js單例模式詳解實例

2019-11-20 21:37:28
字體:
供稿:網(wǎng)友

什么是單例?

單例要求一個類有且只有一個實例,提供一個全局的訪問點。因此它要繞過常規(guī)的控制器,使其只能有一個實例,供使用者使用,而使用著不關(guān)心有幾個實例,因此這是設(shè)計者的責(zé)任

復(fù)制代碼 代碼如下:

In JavaScript, Singletons serve as a shared resource namespace which isolate implementation code from the global namespace so as to provide a single point of access for functions.

在javascript中,單例被當(dāng)做一個全局的命名空間,提供一個訪問該對象的一個點。

使用場景

復(fù)制代碼 代碼如下:

In practice, the Singleton pattern is useful when exactly one object is needed to coordinate others across a system.

單例比較適用于一個對象和其他系統(tǒng)進(jìn)行交互。

類比

單例有點類似于一個小組的小組長,在一段時間內(nèi)只有一個小組長,有小組長來指定組員的工作,分配和協(xié)調(diào)和組員的工作。

實例1:這個是最簡單的單例,通過key,value的形式存儲屬性和方法

復(fù)制代碼 代碼如下:

var A = {
   xx:3,
   yy:4,
   B:function(el){

   },
   C:function(el){

   },
   D:function(el){

   },
   E:function(el){

   }
}


實例2:首先創(chuàng)建一個實例的引用,然后判斷這個實例是否存在,如果不存在那么就創(chuàng)建,存在的話,就直接返回,保證有且只有一個。

復(fù)制代碼 代碼如下:

var mySingleton = (function () {

// Instance 存儲一個單例實例的引用
var instance;

function init() {

// Singleton

// 私有的方法和變量
function privateMethod(){
    console.log( "I am private" );
}

var privateVariable = "Im also private";

return {

  // 共有的方法和變量
  publicMethod: function () {
    console.log( "The public can see me!" );
  },

  publicProperty: "I am also public"
};

};

return {

// 如果實例不存在,那么創(chuàng)建一個
getInstance: function () {

  if ( !instance ) {
    instance = init();
  }

  return instance;
}

};

})();

var singleA = mySingleton;
var singleB = mySingleton;
console.log( singleA === singleB ); // true

實例3:

復(fù)制代碼 代碼如下:

var SingletonTester = (function () {
  // options: an object containing configuration options for the singleton
  // e.g var options = { name: "test", pointX: 5};
  function Singleton( options )  {
    // set options to the options supplied
    // or an empty object if none are provided
    options = options || {};
    // set some properties for our singleton
    this.name = "SingletonTester";
    this.pointX = options.pointX || 6;
    this.pointY = options.pointY || ;
  }
  // our instance holder
  var instance;
  // an emulation of static variables and methods
  var _static  = { 
    name:  "SingletonTester",
    // Method for getting an instance. It returns
    // a singleton instance of a singleton object
    getInstance:  function( options ) {  
      if( instance  ===  undefined )  {   
        instance = new Singleton( options );  
      }  
        return  instance;     
    }
  };
  return  _static;
})();
var singletonTest  =  SingletonTester.getInstance({
  pointX:  5
});
// Log the output of pointX just to verify it is correct
// Outputs: 5
console.log( singletonTest.pointX );

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产成人自拍视频在线观看 | 在线成人亚洲 | 一本精品999爽爽久久久 | 久久久成人精品视频 | 久久久免费观看完整版 | 91福利在线观看 | 91小视频在线观看免费版高清 | 在线天堂中文在线资源网 | 91在线视频网址 | 麻豆视频免费网站 | 欧美精品一二三区 | 国产18成人免费视频 | 欧美人xxx| 精品国产一区二区三区蜜殿 | 亚洲国产综合在线观看 | 国产一级毛片国产 | 伦一区二区三区中文字幕v亚洲 | 精品国产一区二区三区久久久狼牙 | 热99热| 视频一区二区不卡 | 中文字幕亚洲一区二区三区 | vidz 98hd| 亚洲成人综合网站 | 毛片在线免费观看网址 | 亚洲第一激情 | 国产精品免费一区二区三区四区 | 亚洲精品wwww| 久久精品视频在线免费观看 | 中文字幕网在线 | 毛片成人网 | 久久老司机精品视频 | 亚洲电影在线播放 | 色婷婷久久久亚洲一区二区三区 | 91麻豆精品国产91久久久无需广告 | 久久影库 | 性少妇videosexfreexx入片 | 极品销魂一区二区三区 | 色综合一区二区 | 理论片中文字幕 | 线观看免费完整aaa 欧美在线一级 | 91久久国产 |