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 相关文章推荐
js加解密 脚本解密
Feb 22 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
Feb 06 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
Jun 10 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
Jul 25 Javascript
JavaScript中按位“异或”运算符使用介绍
Mar 14 Javascript
AngularJS ng-blur 指令详解及简单实例
Jul 30 Javascript
localStorage的黑科技-js和css缓存机制
Feb 06 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
Mar 15 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
Jul 12 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
Mar 17 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
May 14 Javascript
vue实现路由不变的情况下,刷新页面操作示例
Feb 02 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输出1000以内质数(素数)示例
2014/02/16 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
javascript标签在页面中的位置探讨
2013/04/11 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
jQuery的ready方法详解
2014/11/27 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
Jquery实现仿京东商城省市联动菜单
2015/11/19 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
2016/12/26 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
Python代码实现KNN算法
2017/12/20 Python
Python装饰器原理与用法分析
2018/04/30 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
python async with和async for的使用
2019/06/20 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
Shopee马来西亚:随拍即卖,最佳行动电商拍卖平台
2017/06/05 全球购物
精伦电子Java笔试题
2013/01/16 面试题
信息专业本科生个人的自我评价
2013/10/28 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
我爱祖国演讲稿
2014/09/02 职场文书
高三毕业评语
2014/12/31 职场文书
公司内部升职自荐信
2015/03/27 职场文书
安全学习心得体会范文
2016/01/18 职场文书
2017年寒假少先队活动总结
2016/04/06 职场文书
话题作文之关于呼唤
2019/11/29 职场文书
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android