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 相关文章推荐
firefox和IE系列的相关区别整理 以备后用
Dec 28 Javascript
下拉框select的绑定示例
Sep 04 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
Aug 31 Javascript
Node.js 数据加密传输浅析
Nov 16 Javascript
详解利用Angular实现多团队模块化SPA开发框架
Nov 27 Javascript
Vue打包后出现一些map文件的解决方法
Feb 13 Javascript
webpack中使用iconfont字体图标的方法
Feb 22 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
Jul 17 Javascript
详解小程序原生使用ES7 async/await语法
Aug 06 Javascript
extjs图表绘制之条形图实现方法分析
Mar 06 Javascript
js实现表格数据搜索
Aug 09 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
Aug 14 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
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
2019/06/06 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
jQuery 获取浏览器所在的IP地址的小例子
2013/11/08 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
JavaScript动态改变表格单元格内容的方法
2015/03/30 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
vue 标签属性数据绑定和拼接的实现方法
2018/05/17 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
餐饮业创业计划书范文
2014/01/06 职场文书
清洁工表扬信
2014/01/08 职场文书
美术指导求职信
2014/03/17 职场文书
关于环保的建议书
2014/05/12 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
党员个人党性分析材料
2014/12/18 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书
基于Python的EasyGUI学习实践
2021/05/07 Python
利用Pycharm连接服务器的全过程记录
2021/07/01 Python
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle