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 统计时间
Mar 09 Javascript
location.href语句与火狐不兼容的问题
Jul 04 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
Feb 02 Javascript
js防止表单重复提交实现代码
Sep 05 Javascript
javascript中eval函数用法分析
Apr 25 Javascript
在Javascript中处理数组之toSource()方法的使用
Jun 09 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
May 04 Javascript
js省市县三级联动效果实例
Apr 15 Javascript
JS实现css hover操作的方法示例
Apr 07 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
Jan 09 Javascript
简单了解Ajax表单序列化的实现方法
Jun 14 Javascript
Vue单文件组件开发实现过程详解
Jul 30 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 adodb连接mssql解决乱码问题
2009/06/12 PHP
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
怎样在JavaScript里写一个swing把数据插入数据库
2012/12/10 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
解决vue项目使用font-awesome,build后路径的问题
2018/09/01 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
ASP.NET中的身份验证有那些
2012/07/13 面试题
中学门卫岗位职责
2013/12/26 职场文书
国贸专业的职业规划范文
2014/01/23 职场文书
上班离岗检讨书
2014/01/27 职场文书
高二政治教学反思
2014/02/01 职场文书
法律专业学生的自我评价
2014/02/07 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
个人求职信格式范文
2015/03/20 职场文书
2015年服务员工作总结
2015/04/08 职场文书
教师节主持词开场白
2015/05/29 职场文书