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 相关文章推荐
jscript之List Excel Color Values
Jun 13 Javascript
JSON JQUERY模板实现说明
Jul 03 Javascript
js预载入和JavaScript Image()对象使用介绍
Aug 28 Javascript
关于图片按比例自适应缩放的js代码
Oct 30 Javascript
jquery 实现两Select 标签项互调示例代码
Sep 25 Javascript
JavaScript动态改变表格单元格内容的方法
Mar 30 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
Jan 21 Javascript
ES6中module模块化开发实例浅析
Apr 06 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
Apr 19 Javascript
JS实现匀加速与匀减速运动的方法示例
Sep 04 Javascript
jQuery实现简单日期格式化功能示例
Sep 19 jQuery
Vue-router结合transition实现app前进后退动画切换效果的实例
Oct 11 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 管理系统程序中的后门
2009/08/05 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
PHP实现的进度条效果详解
2016/05/03 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
jQuery无刷新切换主题皮肤实例讲解
2015/10/21 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
jQuery的框架介绍
2016/05/11 Javascript
基于slideout.js实现移动端侧边栏滑动特效
2016/11/28 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
浅谈Vue数据绑定的原理
2018/01/08 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
python 读写txt文件 json文件的实现方法
2016/10/22 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
解释i节点在文件系统中的作用
2013/11/26 面试题
两则小学生的自我评价分享
2013/11/14 职场文书
市场营销求职信范文
2014/02/21 职场文书
2014年销售工作总结
2014/12/01 职场文书
大学生入党自荐书
2015/03/05 职场文书
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript