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 位置插件
Dec 25 Javascript
通过js动态操作table(新增,删除相关列信息)
May 23 Javascript
引用外部js乱码问题分析及解决方案
Apr 12 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
Aug 25 Javascript
javascript实现的网站访问量统计代码
Dec 20 Javascript
js确认框confirm()用法实例详解
Jan 07 Javascript
详解Javascript继承的实现
Mar 25 Javascript
dul无法加载bootstrap实现unload table/user恢复
Sep 29 Javascript
JavaScript模块模式实例详解
Oct 25 Javascript
angular动态表单制作
Feb 23 Javascript
简化vuex的状态管理方案的方法
Jun 02 Javascript
layui原生表单验证的实例
Sep 09 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
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
PDO::prepare讲解
2019/01/29 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
把textarea中字符串里含有的回车换行替换成<br>的javascript代码
2007/04/20 Javascript
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
详解React开发必不可少的eslint配置
2018/02/05 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
详解Python做一个名片管理系统
2019/03/14 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
澳大利亚在线消费电子产品商店:TobyDeals
2020/01/05 全球购物
西式婚礼证婚词
2014/01/12 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
高中班主任评语大全
2014/04/25 职场文书
个人委托书怎么写
2014/09/17 职场文书
党员检讨书
2014/10/13 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
雨中的树观后感
2015/06/03 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL