最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript設(shè)計(jì)模式之單例模式詳解

 更新時(shí)間:2017年06月09日 10:29:32   投稿:lijiao  
這篇文章主要為大家詳細(xì)介紹了JavaScript設(shè)計(jì)模式之例模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近項(xiàng)目不太忙,難得有時(shí)間看看書,平時(shí)挺喜歡js這門語言。也看過很多高級(jí)教程,覺得自己還是比較熱衷于js的設(shè)計(jì)模式。這一次重溫一下《JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐》,開篇為單例模式。

/**
 * pre 單例模式
 * 定義:保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)
 * 應(yīng)用:單例模式是一種常用的模式,有一些對(duì)象我們往往只需要一個(gè),
 * 比如線程池、全局緩存、瀏覽器中的 window 對(duì)象等。
 */
//--------------singleton-01-------------
/*寫法1*/
var Singleton = function(name){
 this.name = name;
 this.instance = null;
};

Singleton.prototype.getName = function(){
 alert(this.name);
};

Singleton.getInstance = function(){
 if(!this.instance){
  this.instance = new Singleton(name);
 }
 return this.instance;
};

var a = Singleton.getInstance("amy");
var b = Singleton.getInstance("ben");
alert(a === b);

// ------------singleton-02----------------
/*寫法2*/
var Singleton = function(name){
 this.name = name;
}
Singleton.prototype.getName = function(){
 return this.name;
}

Singleton.getInstance = (function(){
 var instance = null;
 return function(name){
  if(!instance){
   instance = new Singleton(name);
  }
  return instance;
 }
})();

var a = Singleton.getInstance("amy");
var b = Singleton.getInstance("ben");
alert(a === b);

// ------------singleton03-----------
/*寫法3*/
var Singleton = (function(){
 var instance;
 return function(name){
  if(instance){
   return instance;
  }
  this.name = name;
  instance = this;
 }
})();
var a = new Singleton("amy");
var b = new Singleton("ben");
alert(a === b);

//---------------- 示例 ---------------
var getSingleton = function(fn) {
 var result;
 return function() {
  if(!result) {
   result = fn.apply(this, arguments);
  }
  return result;
 }
};

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

var createLoginUser = function() {
 var div = document.createElement("div");
 div.innerHTML = '這是登錄框';
 document.body.appendChild(div);
 return div;
};

var createInfoGrid = function() {
 var div = document.createElement("div");
 div.innerHTML = '這是列表信息框';
 document.body.appendChild(div);
 return div;
};
//--執(zhí)行singleton1 
var createUserDiv = getSingleton(createLoginUser);
createUserDiv();
createUserDiv();

//--執(zhí)行singleton2
getSingletonVip(createLoginUser);
getSingletonVip(createLoginUser);

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

相關(guān)文章

最新評(píng)論

大安市| 多伦县| 竹北市| 额尔古纳市| 云林县| 五河县| 台南市| 溧阳市| 定安县| 台东县| 木兰县| 滕州市| 兴业县| 麟游县| 耿马| 万荣县| 浮梁县| 永兴县| 安西县| 古交市| 巴彦县| 子洲县| 芒康县| 庄浪县| 英德市| 耒阳市| 寻乌县| 恭城| 乐都县| 宝应县| 太仆寺旗| 门头沟区| 湟中县| 竹溪县| 清水河县| 榆中县| 天门市| 和政县| 新巴尔虎右旗| 黎平县| 济源市|