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 相关文章推荐
javascript cookie解码函数(兼容ff)
Mar 17 Javascript
jQuery TextBox自动完成条
Jul 22 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
Aug 24 Javascript
JS面向对象编程详解
Mar 06 Javascript
JS快速实现移动端拼图游戏
Sep 05 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
Jun 04 Javascript
JS实现的走迷宫小游戏完整实例
Jul 19 Javascript
vue刷新和tab切换实例
Feb 11 Javascript
JS实现简单获取最近7天和最近3天日期的方法
Apr 18 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
Sep 29 Javascript
微信小程序动态设置图片大小的方法
Nov 21 Javascript
一篇文章弄清楚Ajax请求的五个步骤
Mar 17 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
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
解决Laravel5.5下的toArray问题
2019/10/15 PHP
js实现单一html页面两套css切换代码
2013/04/11 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[00:09]DOTA2全国高校联赛 精彩活动引爆全场
2018/05/30 DOTA
Python自定义类的数组排序实现代码
2016/08/28 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
Python list运算操作代码实例解析
2020/01/20 Python
Python 里最强的地图绘制神器
2021/03/01 Python
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
平面设计自荐信
2013/10/07 职场文书
初中美术教学反思
2014/01/29 职场文书
论文指导教师评语
2014/04/28 职场文书
产品销售计划书
2014/05/04 职场文书
党代会心得体会
2014/09/04 职场文书
2015年售票员工作总结
2015/04/29 职场文书
报案材料怎么写
2015/05/25 职场文书
纪律委员竞选稿
2015/11/19 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python
Golang 字符串的常见操作
2022/04/19 Golang
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android