欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

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

发布时间:2023/12/10 javascript 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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设计模式(二)之单例模式的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。