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的12招常用技巧分享
Aug 08 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
Feb 01 Javascript
jquery实现智能感知连接外网搜索
May 21 Javascript
jquery easyui combobox模糊过滤(示例代码)
Nov 30 Javascript
将json对象转换为字符串的方法
Feb 20 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
May 05 Javascript
jQuery继承extend用法详解
Oct 10 Javascript
Node.js包管理器Yarn的入门介绍与安装
Oct 17 Javascript
js解决软键盘遮挡输入框的问题分享
Dec 19 Javascript
vue 中的keep-alive实例代码
Jul 20 Javascript
详解Vue数据驱动原理
Nov 17 Javascript
编写v-for循环的技巧汇总
Dec 01 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
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
php利用header函数下载各种文件
2016/08/24 PHP
详解PHP归并排序的实现
2016/10/18 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
js写一个字符串转成驼峰的实例
2013/06/21 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
谷歌地图打不开的解决办法
2014/08/07 Javascript
JavaScript Sort 的一个错误用法示例
2015/03/20 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
python实现证件照换底功能
2019/08/20 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
python数据类型强制转换实例详解
2020/06/22 Python
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
DeinDesign德国:设计自己的手机壳
2019/12/14 全球购物
大学生职业生涯规划方案
2014/01/03 职场文书
驾驶员岗位职责
2014/01/29 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python
Python OpenCV超详细讲解基本功能
2022/04/02 Python
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android