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

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

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

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

/**
 * pre 單例模式
 * 定義:保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)
 * 應(yīng)用:?jiǎn)卫J绞且环N常用的模式,有一些對(duì)象我們往往只需要一個(gè),
 * 比如線程池、全局緩存、瀏覽器中的 window 對(duì)象等。
 */
//--------------singleton-01-------------
/*寫(xiě)法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----------------
/*寫(xiě)法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-----------
/*寫(xiě)法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);

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

相關(guān)文章

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

    輕量級(jí)JS Cookie插件js-cookie的使用方法

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

    JavaScript實(shí)現(xiàn)定時(shí)任務(wù)隊(duì)列的示例代碼

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

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

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

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

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

    popdiv

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

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

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

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

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

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

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

    如何HttpServletRequest文件對(duì)象并儲(chǔ)存

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

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

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

最新評(píng)論