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 相关文章推荐
对xmlHttp对象的理解
Jan 17 Javascript
JavaScript将相对地址转换为绝对地址示例代码
Jul 19 Javascript
javascript创建数组之联合数组的使用方法示例
Dec 26 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
Mar 10 Javascript
TypeScript学习之强制类型的转换
Dec 27 Javascript
详解Vue微信公众号开发踩坑全记录
Aug 21 Javascript
Vue 换肤的示例实践
Jan 23 Javascript
在vue-cli项目中使用bootstrap的方法示例
Apr 21 Javascript
layDate日期控件使用方法详解
Nov 15 Javascript
基于vue的验证码组件的示例代码
Jan 22 Javascript
uni-app 微信小程序授权登录的实现步骤
Feb 18 Javascript
JS开发前端团队展示控制器来为成员引流
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
PHP中的超全局变量
2006/10/09 PHP
检查php文件中是否含有bom的函数
2012/05/31 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
jQuery中first()方法用法实例
2015/01/06 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
关于JavaScript的单双引号嵌套问题
2017/08/20 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
webpack的tree shaking的实现方法
2019/09/18 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
python的常见命令注入威胁
2013/02/18 Python
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
浅谈python import引入不同路径下的模块
2017/07/11 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
pandas分组聚合详解
2020/04/10 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
美工的岗位职责
2013/11/14 职场文书
公司前台接待岗位职责
2013/12/03 职场文书
小学生环保标语
2014/06/13 职场文书
2014年人事部工作总结
2014/12/03 职场文书
挂靠协议书
2015/01/27 职场文书
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js