国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

學習JavaScript設計模式之單例模式

2019-11-20 10:46:07
字體:
來源:轉載
供稿:網友

一、定義

保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。
當單擊登陸按鈕,頁面中出現一個登陸浮窗,這個登陸浮窗是唯一的,無論單擊多少次登陸按鈕,這個浮窗都只會被創建一次,那么這個登陸浮窗就適合用單例模式來創建。

二、實現原理

要實現單例并不復雜,使用一個變量來標志當前是否已經為某個類創建過對象,如果是,則在下一次獲取該類的實例時,直接返回之前創建的對象。

三、假單例

全局變量不是單例模式,但在JavaScript開發中,我們經常會把全局變量當成單例來使用。

var a = {};

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

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

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

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

四、惰性單例:在需要的時候才能創建對象實例

var getSingle = function(fn) {  var result;  return function() {    return result || (result = fn.apply(this, arguments));  };};// 測試function testSingle(){}getSingle(testSingle)() === getSingle(testSingle)();  // true

五、補充:

(1)懶加載

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

(2)預加載

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

希望本文所述對大家學習javascript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉善县| 攀枝花市| 闽侯县| 德州市| 柳河县| 志丹县| 湘西| 双桥区| 南昌县| 昭平县| 洪洞县| 全南县| 漳平市| 武城县| 东源县| 固原市| 呼和浩特市| 高淳县| 邢台县| 彝良县| 乐安县| 石泉县| 福州市| 安丘市| 永丰县| 贵定县| 阿拉善右旗| 枞阳县| 星子县| 株洲市| 平邑县| 蓬安县| 凯里市| 剑阁县| 乐陵市| 从江县| 伽师县| 泰宁县| 奉节县| 九江县| 扎兰屯市|