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 相关文章推荐
Prototype使用指南之dom.js
Jan 10 Javascript
JS 常用校验函数
Mar 26 Javascript
js保留小数点后几位的写法
Jan 03 Javascript
浅谈Javascript中深复制
Dec 01 Javascript
JavaScript使用cookie实现记住账号密码功能
Apr 27 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
Oct 29 Javascript
学习javascript面向对象 理解javascript对象
Jan 04 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
Oct 26 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
Sep 16 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
Sep 18 Javascript
vue实现路由监听和参数监听
Oct 29 Javascript
JavaScript实现好看的跟随彩色气泡效果
Feb 06 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
使用eAccelerator加密PHP程序
2008/10/03 PHP
php笔记之常用文件操作
2010/10/12 PHP
php实现简单洗牌算法
2013/06/18 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
php文件上传类完整实例
2016/05/14 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
js innerHTML 的一些问题的解决方法
2008/06/22 Javascript
jquery 上下滚动广告
2009/06/17 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
2014/12/16 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
2016/06/13 Javascript
JS动态加载脚本并执行回调操作
2016/08/24 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
详解redis在nodejs中的应用
2018/05/02 NodeJs
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
python logging日志模块原理及操作解析
2019/10/12 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
python随机模块random使用方法详解
2020/02/14 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
关于Java finally的面试题
2016/04/27 面试题
行政办公员自我评价分享
2013/12/14 职场文书
教师竞聘演讲稿
2014/05/16 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
CSS实现切角+边框+投影+内容背景色渐变效果
2021/11/01 HTML / CSS
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL