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 相关文章推荐
Using the TextRange Object
Oct 14 Javascript
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
Sep 26 Javascript
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
Nov 24 Javascript
一个基于jquery的图片切换效果
Jul 06 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
Aug 28 Javascript
浅谈javascript原型链与继承
Jul 13 Javascript
javascript省市级联功能实现方法实例详解
Oct 20 Javascript
jQuery实现产品对比功能附源码下载
Aug 09 Javascript
Javascript中的async awai的用法
May 17 Javascript
Angular4 中内置指令的基本用法
Jul 31 Javascript
解决jquery有正确返回值但不执行success函数的问题
Aug 20 jQuery
swiper.js插件实现pc端文本上下滑动功能示例
Dec 03 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字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
检测是否已安装 .NET Framework 3.5的js脚本
2009/02/14 Javascript
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
Jquery截取中文字符串的实现代码
2010/12/22 Javascript
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
2014/06/26 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
微信小程序 UI布局常用技巧整理总结
2016/12/05 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
python脚本爬取字体文件的实现方法
2017/04/29 Python
Python获取当前路径实现代码
2017/05/08 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
机器学习10大经典算法详解
2017/12/07 Python
利用python的socket发送http(s)请求方法示例
2018/05/07 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
python给list排序的简单方法
2020/12/10 Python
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
英语国培研修感言
2014/02/13 职场文书
工作证明书
2015/06/15 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技