js单例模式的两种方案


Posted in Javascript onOctober 22, 2013

方案一:利用闭包的两个作用,可以变通地读到内部的变量,二是可以让这些变量始终在内存中。

//方案一 
    var SingletonTester = (function () { 
        //单例方法 
        function Singleton(args) { 
            var args = args || {}; 
            this.name = 'SingletonTester'; //方法对外的属性,另外一种方式就是返回对象 
            this.pointX = args.pointX || 6; 
            this.pointY = args.pointY || 10; 
        }         //单例实例 
        var instance; 
        //返回对象 
        return { 
            name: 'SingletonTester', 
            getInstance: function (args) { 
                if (instance === undefined) { 
                    instance = new Singleton(args); 
                } 
                return instance; 
            } 
        }; 
    })(); //直接执行该方法 
    //测试 
    var test = SingletonTester.getInstance({ pointX: 5 }); 
    console.log(test.pointX);

方案二: 

//方案二 
  function Universe() { 
      // 判断是否存在实例 
      if (typeof Universe.instance === 'object') { 
          return Universe.instance; 
      }       // 其它内容 
      this.start_time = 0; 
      this.bang = "Big"; 
      // 缓存 
      Universe.instance = this; 
      // 隐式返回this 
  } 
  // 测试 
  var uni = new Universe(); 
  var uni2 = new Universe(); 
  console.log(uni === uni2); // true
Javascript 相关文章推荐
JS 去前后空格大全(IE9亲测)
Jul 15 Javascript
浅析JavaScript中两种类型的全局对象/函数
Dec 05 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
Mar 20 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
Aug 03 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
Aug 21 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
Oct 31 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
May 28 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
May 30 Javascript
关于HTML5的data-*自定义属性的总结
May 05 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
May 21 jQuery
Three.js实现简单3D房间布局
Dec 30 Javascript
基于Electron实现桌面应用开发代码实例
Jul 07 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
Oct 22 #Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
Oct 22 #Javascript
Javascript实现真实字符串剩余字数提示的实例代码
Oct 22 #Javascript
用js的for循环获取radio选中的值
Oct 21 #Javascript
将input file的选择的文件清空的两种解决方案
Oct 21 #Javascript
javascript验证只能输入数字和一个小数点示例
Oct 21 #Javascript
jquery选择器-根据多个属性选择示例代码
Oct 21 #Javascript
You might like
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
JS验证不重复验证码
2017/02/10 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
vue实现选项卡及选项卡切换效果
2018/04/24 Javascript
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
js继承的这6种方式!(上)
2019/04/23 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
Python实现简单字典树的方法
2016/04/29 Python
对python函数签名的方法详解
2019/01/22 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
python类的实例化问题解决
2019/08/31 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
Python实现密码薄文件读写操作
2019/12/16 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
浅谈Python __init__.py的作用
2020/10/28 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
四年级科学教学反思
2014/02/10 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
计划生育证明格式范本
2014/09/12 职场文书
清明节主题班会
2015/08/14 职场文书
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python