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

學(xué)習(xí)JavaScript設(shè)計(jì)模式之單例模式

 更新時(shí)間:2016年01月19日 11:01:29   作者:奮飛  
這篇文章主要為大家介紹了JavaScript設(shè)計(jì)模式中的單例模式,對(duì)JavaScript設(shè)計(jì)模式感興趣的小伙伴們可以參考一下

一、定義

保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。
當(dāng)單擊登陸按鈕,頁(yè)面中出現(xiàn)一個(gè)登陸浮窗,這個(gè)登陸浮窗是唯一的,無論單擊多少次登陸按鈕,這個(gè)浮窗都只會(huì)被創(chuàng)建一次,那么這個(gè)登陸浮窗就適合用單例模式來創(chuàng)建。

二、實(shí)現(xiàn)原理

要實(shí)現(xiàn)單例并不復(fù)雜,使用一個(gè)變量來標(biāo)志當(dāng)前是否已經(jīng)為某個(gè)類創(chuàng)建過對(duì)象,如果是,則在下一次獲取該類的實(shí)例時(shí),直接返回之前創(chuàng)建的對(duì)象。

三、假單例

全局變量不是單例模式,但在JavaScript開發(fā)中,我們經(jīng)常會(huì)把全局變量當(dāng)成單例來使用。

var a = {};

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

var namespace1 = {
  a: function(){},
  b: 2
}

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

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

四、惰性單例:在需要的時(shí)候才能創(chuàng)建對(duì)象實(shí)例

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

// 測(cè)試
function testSingle(){}
getSingle(testSingle)() === getSingle(testSingle)();  // true

五、補(bǔ)充:

(1)懶加載

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

lazyload();

(2)預(yù)加載

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

preload();

希望本文所述對(duì)大家學(xué)習(xí)javascript程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

河南省| 武穴市| 自贡市| 九江市| 贵阳市| 冀州市| 崇仁县| 大庆市| 正宁县| 当涂县| 江安县| 安丘市| 长春市| 白沙| 磐石市| 兰溪市| 吉林市| 延长县| 日土县| 普安县| 萍乡市| 湘西| 新绛县| 丁青县| 温州市| 庆阳市| 曲周县| 揭阳市| 南宁市| 新绛县| 莱芜市| 福州市| 麻栗坡县| 醴陵市| 通许县| 彰化县| 达孜县| 读书| 福州市| 黔西县| 甘谷县|