亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript設計模式之單例模式詳解

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

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

/**
 * pre 單例模式
 * 定義:保證一個類僅有一個實例,并提供一個訪問它的全局訪問點
 * 應用:單例模式是一種常用的模式,有一些對象我們往往只需要一個,
 * 比如線程池、全局緩存、瀏覽器中的 window 對象等。
 */
//--------------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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 輕量級JS Cookie插件js-cookie的使用方法

    輕量級JS Cookie插件js-cookie的使用方法

    js-cookie插件是一個JS操作cookie的插件,源文件只有3.34 KB,非常輕量級,js-cookie也支持npm和Bower安裝和管理,下面看看js-cookie的具體用法
    2018-03-03
  • JavaScript實現(xiàn)定時任務隊列的示例代碼

    JavaScript實現(xiàn)定時任務隊列的示例代碼

    這篇文章主要為大家詳細介紹了如何使用JavaScript實現(xiàn)一個基于一定時間間隔連續(xù)執(zhí)行任務隊列的功能,文中的示例代碼講解詳細,需要的小伙伴可以參考下
    2023-11-11
  • js下將字符串當函數(shù)執(zhí)行的方法

    js下將字符串當函數(shù)執(zhí)行的方法

    js下將字符串當函數(shù)執(zhí)行的方法,需要的朋友可以參考下。
    2011-07-07
  • 調(diào)試Node.JS的輔助工具(NodeWatcher)

    調(diào)試Node.JS的輔助工具(NodeWatcher)

    Node.JS調(diào)試貌似比較麻煩,每次改完了要重啟一下Node進程.GOOGLE上有個NPM模塊,可以監(jiān)控JS文件的更改,然后自動重啟Node.但我下載后在windows里運行報錯
    2012-01-01
  • popdiv

    popdiv

    popdiv...
    2006-07-07
  • 原生js實現(xiàn)tab選項卡切換

    原生js實現(xiàn)tab選項卡切換

    這篇文章主要為大家詳細介紹了原生js實現(xiàn)tab選項卡,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Egg Vue SSR 服務端渲染數(shù)據(jù)請求與asyncData

    Egg Vue SSR 服務端渲染數(shù)據(jù)請求與asyncData

    這篇文章主要介紹了Egg Vue SSR 服務端渲染數(shù)據(jù)請求與asyncData,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • 微信js-sdk界面操作接口用法示例

    微信js-sdk界面操作接口用法示例

    這篇文章主要介紹了微信js-sdk界面操作接口用法,結(jié)合實例形式分析了微信界面操作的相關(guān)接口功能與使用技巧,需要的朋友可以參考下
    2016-10-10
  • 如何HttpServletRequest文件對象并儲存

    如何HttpServletRequest文件對象并儲存

    這篇文章主要介紹了如何HttpServletRequest文件對象并儲存,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • TableSort.js表格排序插件使用方法詳解

    TableSort.js表格排序插件使用方法詳解

    這篇文章主要為大家詳細介紹了TableSort.js表格排序插件的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02

最新評論