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 相关文章推荐
JS IE和FF兼容性问题汇总
Feb 09 Javascript
顶部缓冲下拉菜单导航特效的JS代码
Aug 27 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
Jan 02 Javascript
jquery如何根据值设置默认的选中项
Mar 17 Javascript
jquery+css实现的红色线条横向二级菜单效果
Aug 22 Javascript
如何实现移动端浏览器不显示 pc 端的广告
Oct 15 Javascript
Javascript简写条件语句(推荐)
Jun 12 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
Apr 20 Javascript
详解RequireJs官方使用教程
Oct 31 Javascript
Vue 动态组件components和v-once指令的实现
Aug 30 Javascript
js校验开始时间和结束时间
May 26 Javascript
Vue-resource安装过程及使用方法解析
Jul 21 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
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
PHP中判断变量为空的几种方法小结
2013/11/12 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
php基于session锁防止阻塞请求的方法分析
2017/08/07 PHP
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
2014/09/09 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
JavaScript 性能优化小结
2015/10/12 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
详解webpack解惑:require的五种用法
2017/06/09 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
python timestamp和datetime之间转换详解
2017/12/11 Python
python 中字典嵌套列表的方法
2018/07/03 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
struct与class的区别
2014/02/03 面试题
银行开业庆典方案
2014/02/06 职场文书
做一个有道德的人演讲稿
2014/05/14 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
会计演讲稿范文
2014/05/23 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书
pandas提升计算效率的一些方法汇总
2021/05/30 Python
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL