javascript设计模式之模块模式学习笔记


Posted in Javascript onFebruary 15, 2017

我们通过单体模式理解了是以对象字面量的方式来创建单体模式的;比如如下的对象字面量的方式代码如下:

var singleMode = {
  name: value,
  method: function(){
        
  }
};

模块模式的思路是为单体模式添加私有变量和私有方法能够减少全局变量的使用;如下就是一个模块模式的代码结构:

var singleMode = (function(){
  // 创建私有变量
  var privateNum = 112;
  // 创建私有函数
  function privateFunc(){
    // 实现自己的业务逻辑代码
  }
  // 返回一个对象包含公有方法和属性
  return {
    publicMethod1: publicMethod1,
    publicMethod2: publicMethod1
  };
})();

模块模式使用了一个返回对象的匿名函数。在这个匿名函数内部,先定义了私有变量和函数,供内部函数使用,然后将一个对象字面量作为函数的值返回,返回的对象字面量中只包含可以公开的属性和方法。这样的话,可以提供外部使用该方法;由于该返回对象中的公有方法是在匿名函数内部定义的,因此它可以访问内部的私有变量和函数。

我们什么时候使用模块模式?

如果我们必须创建一个对象并以某些数据进行初始化,同时还要公开一些能够访问这些私有数据的方法,那么我们这个时候就可以使用模块模式了。

理解增强的模块模式

增强的模块模式的使用场合是:适合那些单列必须是某种类型的实例,同时还必须添加某些属性或方法对其加以增强的情况。比如如下代码:

function CustomType() {
  this.name = "tugenhua";
};
CustomType.prototype.getName = function(){
  return this.name;
}
var application = (function(){
  // 定义私有
  var privateA = "aa";
  // 定义私有函数
  function A(){};

  // 实例化一个对象后,返回该实例,然后为该实例增加一些公有属性和方法
  var object = new CustomType();

  // 添加公有属性
  object.A = "aa";
  // 添加公有方法
  object.B = function(){
    return privateA;
  }
  // 返回该对象
  return object;
})();

下面我们来打印下application该对象;如下:

console.log(application);

javascript设计模式之模块模式学习笔记

继续打印该公有属性和方法如下:

console.log(application.A);// aa
console.log(application.B()); // aa
console.log(application.name); // tugenhua
console.log(application.getName());// tugenhua

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery ajax 登录验证实现代码
Sep 23 Javascript
浅析return false的正确使用
Nov 04 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
Mar 03 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
Mar 06 Javascript
JavaScript使用yield模拟多线程的方法
Mar 19 Javascript
jquery实现简单手风琴菜单效果实例
Jun 13 Javascript
js获取地址栏中传递的参数(两种方法)
Feb 08 Javascript
jQuery中map函数的两种方式
Apr 07 jQuery
jquery动态添加以及遍历option并获取特定样式名称的option方法
Jan 29 jQuery
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
Jun 14 Javascript
javascript 对象 与 prototype 原型用法实例分析
Nov 11 Javascript
微信小程序绘制半圆(弧形)进度条
Nov 18 Javascript
javascript设计模式之策略模式学习笔记
Feb 15 #Javascript
BootStrap实现带关闭按钮功能
Feb 15 #Javascript
Jil,高效的json序列化和反序列化库
Feb 15 #Javascript
Bootstrap模态框使用详解
Feb 15 #Javascript
js时间戳和c#时间戳互转方法(推荐)
Feb 15 #Javascript
浅析javaScript中的浅拷贝和深拷贝
Feb 15 #Javascript
微信小程序之MaterialDesign--input组件详解
Feb 15 #Javascript
You might like
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
2014/04/24 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
php实现算术验证码功能
2018/12/05 PHP
InnerHtml和InnerText的区别分析
2009/03/13 Javascript
jquery异步调用页面后台方法‏(asp.net)
2011/03/01 Javascript
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
纯css下拉菜单 无需js
2016/08/15 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
[01:08:29]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第一场 1月9日
2021/03/11 DOTA
Python线程的两种编程方式
2015/04/14 Python
Python简单计算文件夹大小的方法
2015/07/14 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
Python列表切片常用操作实例解析
2020/03/10 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
python raise的基本使用
2020/09/10 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
德国购买门票网站:ADticket.de
2019/10/31 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
求职信的最佳写作思路
2014/02/01 职场文书
主持人演讲稿
2014/05/13 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS