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 在firebug调试时用console.log的方法
May 10 Javascript
使用jQuery validate 验证注册表单实例演示
Mar 25 Javascript
javascript使用prototype完成单继承
Dec 24 Javascript
JS实现仿微博可关闭弹出层效果
Sep 21 Javascript
全面了解JavaScript的数据类型转换
Jul 01 Javascript
Angular X中使用ngrx的方法详解(附源码)
Jul 10 Javascript
Vue中使用clipboard实现复制功能
Sep 05 Javascript
Vue使用watch监听一个对象中的属性的实现方法
May 10 Javascript
详解vue页面首次加载缓慢原因及解决方案
Nov 06 Javascript
开发Node CLI构建微信小程序脚手架的示例
Mar 27 Javascript
基于Vue实现微前端的示例代码
Apr 24 Javascript
如何利用JS将手机号中间四位变成*号
Sep 29 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 获得汉字拼音首字母的函数
2009/08/01 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
2012/10/04 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
Javascript 复制数组实现代码
2009/11/26 Javascript
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
IE下使用cloneNode注意事项分享
2012/11/22 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
使用jquery prev()方法找到同级的前一个元素
2014/07/11 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
PHP+mysql+Highcharts生成饼状图
2015/05/04 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
JS之获取样式的简单实现方法(推荐)
2016/09/13 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
Python3中多线程编程的队列运作示例
2015/04/16 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
谈谈python中GUI的选择
2018/03/01 Python
详解Python流程控制语句
2020/10/28 Python
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
俄罗斯购买自行车网站:Vamvelosiped
2021/01/29 全球购物
办理房产过户的委托书
2014/09/14 职场文书
2014年销售人员工作总结
2014/11/27 职场文书
财务经理岗位职责
2015/01/31 职场文书
500字小学生检讨书
2015/02/19 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
Go语言并发编程 sync.Once
2021/10/16 Golang
springmvc直接不经过controller访问WEB-INF中的页面问题
2022/02/24 Java/Android
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电