日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript设计模式(二)之单例模式

發布時間:2023/12/10 javascript 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript设计模式(二)之单例模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、單例模式的定義

單例就是保證一個類只有一個實例,實現的方法一般是先判斷實例存在與否,如果存在直接返回,如果不存在就創建后再返回,這就確保了一個類只有一個實例對象。在JavaScript里,單例作為一個命名空間的提供者,從全局命名空間里提供一個唯一的訪問點來訪問該對象。

?

二、單例模式的作用

作用:

  • 模塊間通訊。
  • 系統中某個類的對象只能存在一個。
  • 保護自己的屬性和方法。

注意事項:

  • 注意this的使用。
  • 閉包容易造成內存泄漏,不需要的趕快干掉。
  • 注意new的成本。(繼承)

三、單例模式的簡單分類

主要分為:

  • 簡單單例
  • 具有局部變量的特殊單例
  • 惰性單體
  • 分支單體
/*** 普通單體* 比如:用戶登錄之后的信息可以用一個單體存儲*/ (function(){// 用來區分命名空間,并且將一組相關的屬性和方法組織到一起var UserInfo = {name: 'admin',code:'00101',deptName: 'pd',deptCode: 'PD001',getName: function() {return 'admin'}};alert(UserInfo.getName()) })()/*** 具有局部屬性的特殊單體*/ (function() {var UserInfo = (function(){// 利用閉包使單體有自己的私有局部變量var name = "";var code = "";// 請求后臺數據獲取屬性值ajaxreturn {name: name,code: code}})();alert(UserInfo.name) })()/*** 惰性單體*/ (function(){var UserInfo = (function() {var userInfo = "";function init() {var name = "";var code = "";// 請求后臺數據獲取屬性值ajaxreturn {name: name,code: code}}return {getInstance : function() {if (userInfo) {return userinfo;} else {userInfo = init();return userInfo;}}}})();alert(UserInfo.getInstance().name); })()/*** 分支單體* 比如:根據瀏覽器獲取不同的XHR,或者在不同的分辨率下初始化界面*/ (function() {// 獲取機器的分辨率var screenWidth = window.screen.width;var screenHeight = window.screen.height;var portalInfo = (function() {var $1280 = {info: '1,2,3,5'};var $1024 = {info: '1,2,3,5'};if(screenWidth == 1280) {return $1280;} else if (screenWidth == 1024) {return $1024;}})();alert(portalInfo.info) })()

?

總結

以上是生活随笔為你收集整理的JavaScript设计模式(二)之单例模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。