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 while语句和do while语句的区别分析
Dec 08 Javascript
jQuery中get和post方法传值测试及注意事项
Aug 08 Javascript
javascript中定义类的方法详解
Feb 10 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
Jul 28 Javascript
详细谈谈AngularJS的子级作用域问题
Sep 05 Javascript
Angular2 (RC4) 路由与导航详解
Sep 21 Javascript
jQuery实现 RadioButton做必选校验功能
Jun 15 jQuery
深入浅析Vue.js计算属性和侦听器
May 05 Javascript
微信小程序使用template标签实现五星评分功能
Nov 03 Javascript
Node使用Selenium进行前端自动化操作的代码实现
Oct 10 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
May 23 Javascript
VUE项目axios请求头更改Content-Type操作
Jul 24 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 echo 输出字符串函数详解
2010/05/13 PHP
解析PHP多种序列化与反序列化的方法
2013/06/06 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
javascript 获取图片颜色
2009/04/05 Javascript
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
JavaScript & jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
[02:55]2018DOTA2国际邀请赛勇士令状不朽珍藏Ⅲ饰品一览
2018/08/01 DOTA
python批量制作雷达图的实现方法
2016/07/26 Python
python条件变量之生产者与消费者操作实例分析
2017/03/22 Python
Python paramiko模块的使用示例
2018/04/11 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
python简单区块链模拟详解
2019/07/03 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
意大利消费电子产品购物网站:SLG Store
2019/12/26 全球购物
乡村文明行动实施方案
2014/03/29 职场文书
《黄山奇石》教学反思
2014/04/19 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
学校2014年度工作总结
2014/12/06 职场文书
庐山导游词
2015/02/03 职场文书
运动会观后感
2015/06/09 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
使用nginx配置访问wgcloud的方法
2021/06/26 Servers