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操作Select 简单方便 一个js插件搞定
Nov 12 Javascript
JavaScript计算两个日期时间段内日期的方法
Mar 16 Javascript
javascript的变量、传值、传址、参数之间关系
Jul 26 Javascript
JavaScript事件类型中UI事件详解
Jan 14 Javascript
浅析JavaScript中浏览器的兼容问题
Apr 19 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
Sep 17 Javascript
Javascript中arguments对象的详解与使用方法
Oct 04 Javascript
Angular.js之作用域scope'@','=','&'实例详解
Feb 28 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
Jan 30 Javascript
vue一个页面实现音乐播放器的示例
Feb 06 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
Aug 06 Javascript
OpenLayers3加载常用控件使用方法详解
Sep 25 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面向对象学习笔记之一 基础概念
2012/10/06 PHP
解析PHP 5.5 新特性
2013/07/02 PHP
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
PHP清除字符串中所有无用标签的方法
2014/12/01 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
php判断文件上传图片格式的实例详解
2017/09/30 PHP
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
2016/05/05 Javascript
JS常用知识点整理
2017/01/21 Javascript
js仿微信抢红包功能
2020/09/25 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
Python探索之自定义实现线程池
2017/10/27 Python
Django实现文件上传下载
2019/10/06 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
如何进行Linux分区优化
2013/02/12 面试题
特色蛋糕店创业计划书
2014/01/28 职场文书
开会迟到检讨书
2014/02/03 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
销售内勤岗位职责
2014/04/15 职场文书
优质服务口号
2014/06/11 职场文书
个人债务授权委托书
2014/10/17 职场文书
刑事申诉状范文
2015/05/20 职场文书
python迷宫问题深度优先遍历实例
2021/06/20 Python
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
WebRTC记录音视频流(web技术分享)
2022/02/24 Javascript
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫