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数组组合成字符串的脚本
Jan 06 Javascript
刷新页面实现方式总结(HTML,ASP,JS)
Nov 13 Javascript
jquery实现图片上传前本地预览功能
May 10 Javascript
jQuery中show与hide方法用法示例
Sep 16 Javascript
layer实现弹窗提交信息
Dec 12 Javascript
vue-quill-editor实现图片上传功能
Aug 08 Javascript
JavaScript中递归实现的方法及其区别
Sep 12 Javascript
javaScript中"=="和"==="的区别详解
Mar 16 Javascript
利用Blob进行文件上传的完整步骤
Aug 02 Javascript
jQuery仿移动端支付宝键盘的实现代码
Aug 15 jQuery
Vue中 key keep-alive的实现原理
Sep 18 Javascript
浅谈VUE中演示v-for为什么要加key
Jan 16 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微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
js实现固定显示区域内自动缩放图片的方法
2015/07/18 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
2016/01/22 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
vue+vue-router转场动画的实例代码
2018/09/01 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
微信小程序轮播图swiper代码详解
2020/12/01 Javascript
用C++封装MySQL的API的教程
2015/05/06 Python
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
Python正则抓取网易新闻的方法示例
2017/04/21 Python
Python算术运算符实例详解
2017/05/31 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
Python动态导入模块的方法实例分析
2018/06/28 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
浅析python 中大括号中括号小括号的区分
2019/07/29 Python
Python实现井字棋小游戏
2020/03/09 Python
keras中的History对象用法
2020/06/19 Python
django rest framework 过滤时间操作
2020/07/12 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
大学生专业个人学习的自我评价
2013/10/26 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
幼师自荐信范文(2016推荐篇)
2016/01/28 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书
详解Python为什么不用设计模式
2021/06/24 Python