JavaScript设计模式之单例模式简单实例教程


Posted in Javascript onJuly 02, 2018

本文实例讲述了JavaScript设计模式之单例模式。分享给大家供大家参考,具体如下:

一、单例模式概念

单例就是保证一个类只有一个实例,实现方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。在JavaScript里,单例作为一个命名空间提供者,从全局命名空间里提供一个唯一的访问点来访问该对象。

二、单例模式的作用和注意事项

模式作用:

1、模块间通信

2、系统中某个类的对象只能存在一个

3、保护自己的属性和方法

注意事项:

1、注意this的使用

2、闭包容易造成内存泄露,不需要的要赶快干掉

3、注意new的成本。(继承)

三、单例模式代码和实战总结

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>单例模式</title>
</head>
<body>
<!--<script>
  var Singleton = (function(){
    var instantiated;
    function init(){
      /*这里定义单例代码*/
      return{
        publicMethod:function(){
          console.log("hello world");
        },
        publicProperty:"test"
      };
    }
    return{
      getInstance:function(){
        if(!instantiated){
          instantiated = init();
        }
        return instantiated;
      }
    }
  })();
  Singleton.getInstance().publicMethod();
</script>-->
<script>
   /*1.独立的对象 建2个一个xiaowang一个xiaoli
   2.让xiaoli跟xiaowang通过门铃进行通信
   3.先看一下xiaowang家有没有门 如果油门直接通过门铃通讯didi如果没有门先建门
   4.两个单例之间看是通讯*/
  var xiaowang = (function(argument){
    var men;
    var xiaowangjia = function(msg){
      this.menling = msg;
    }
    var info = {
      sendMessage:function(msg){
        if(!men){
          men = new xiaowangjia(msg);
        }
        return men;
      },
      abc:function(){
        return 123;
      }
    };
    return info;
  })();
  var xiaoli = {
    callXiaowang:function(msg){
      var _xw = xiaowang.sendMessage(msg);
      alert(_xw.menling);
      console.log(_xw.menling);
      _xw = null;//等待垃圾回收
      var abc = xiaowang.abc();
      console.log(abc);
    }
  }
  xiaoli.callXiaowang("didi");
</script>
</body>
</html>

使用在线HTML/CSS/JavaScript代码运行工具 http://tools.3water.com/code/HtmlJsRun测试运行效果如下:

JavaScript设计模式之单例模式简单实例教程

JavaScript设计模式之单例模式简单实例教程

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
扩展jquery实现客户端表格的分页、排序功能代码
Mar 16 Javascript
JS继承 笔记
Jul 13 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
Dec 12 Javascript
js实现键盘控制DIV移动的方法
Jan 10 Javascript
JS实现鼠标框选效果完整实例
Jun 20 Javascript
js实现瀑布流效果(自动生成新的内容)
Mar 16 Javascript
vue-cli + sass 的正确打开方式图文详解
Oct 27 Javascript
VeeValidate在vue项目里表单校验应用案例
May 09 Javascript
详解js实时获取并显示当前时间的方法
May 10 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
May 24 Javascript
node.js处理前端提交的GET请求
Aug 30 Javascript
关于vue 项目中浏览器跨域的配置问题
Nov 10 Javascript
JavaScript设计模式之建造者模式实例教程
Jul 02 #Javascript
JS实现的JSON序列化操作简单示例
Jul 02 #Javascript
JS内部事件机制之单线程原理
Jul 02 #Javascript
JS将网址url转化为JSON格式的方法
Jul 02 #Javascript
原生JS实现列表子元素顺序反转的方法分析
Jul 02 #Javascript
JS限制输入框输入的实现代码
Jul 02 #Javascript
webpack手动配置React开发环境的步骤
Jul 02 #Javascript
You might like
用文本文件制作留言板提示(上)
2006/10/09 PHP
php MsSql server时遇到的中文编码问题
2009/06/11 PHP
PHP中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
2021/03/09 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
2010/04/25 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
Google Maps基础及实例解析
2016/08/06 Javascript
Bootstrap页面标题Page Header的实现方法
2017/03/22 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
vuex的简单使用教程
2018/02/02 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
国际象棋商店:The Chess Store
2018/07/09 全球购物
夜大毕业生自我鉴定
2013/10/31 职场文书
大学生关于奋斗的演讲稿
2014/01/09 职场文书
日语专业个人求职信范文
2014/02/02 职场文书
幼儿园春季开学寄语
2014/04/03 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
网络研修心得体会
2016/01/08 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书