概念

模块模式的思路 就是 就是单例模式添加私有属性和私有方法,减少全局变量的使用。

简单的代码结构:

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

什么时候使用模块模式?

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

增强的模块模式

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

function CustomType() {this.name = "GaoSir";
};
CustomType.prototype.getName = function(){return this.name;
}
var application = (function(){// 定义私有var privateA = "privateA";// 定义私有函数function privateMethodA(){};// 实例化一个对象后,返回该实例,然后为该实例增加一些公有属性和方法var object = new CustomType();// 添加公有属性object.publicA = "publicA";// 添加公有方法object.publicB = function(){return privateA;}// 返回该对象return object;
})();

console.log(application.publicA);// publicA

console.log(application.publicB()); // privateA

console.log(application.name); // GaoSir

console.log(application.getName());// GaoSir

 

转载于:https://www.cnblogs.com/gaosirs/p/10748852.html

JS 设计模式四 -- 模块模式相关推荐

  1. js设计模式之代理模式

    一. 初识代理模式 代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问.它的用处就是当客户不方便直接访问一个对象或者不满足需要的时候,提供一个替身对象来控制对这个对象的访问.通俗来讲就是, ...

  2. 设计模式(四)——工厂模式(Factory Pattern)

    工厂模式(Factory Pattern) 意义 工厂模式 实现了创建者和调用者的分离.将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦.从而提高项目的扩展和维护性 ...

  3. JS设计模式学习 - 代理模式

    代理模式(Proxy) 为一个对象提供一个代用品或占位符,以便控制对它们的访问. 代理模式是一种非常有意义的模式,在生活中可以找到很多代理模式的场景.比如,明星都有经纪人作为代理. 代理模式的关键是, ...

  4. JS设计模式之代理模式-虚拟代理

    定义 为一个对象提供一种代理以控制对这个对象的访问 分类 虚拟代理:虚拟代理是把一些开销很大的对象,延迟到真正需要它的时候才去创建执行 安全代理:控制真实对象的访问权限 远程代理(一个对象将不同空间的 ...

  5. JS设计模式(策略模式)

    策略模式 概念 不同策略分开处理 避免出现大量if-else 或者 switch-case (JS 中未找到经典应用场景) 演示 青铜写法: 王者写法:(摆脱很多的if-else写法) 设计原则验证 ...

  6. JS设计模式(原型模式)

    原型模式 概念 clone自己,生成一个新对象 java默认有clone接口,不用自己实现 应用 js中的应用 - Object.create 对比JS中的原型prototype prototype可 ...

  7. js设计模式-装饰器模式

    装饰器模式 在不改变其原有的结构和功能为对象添加新功能,装饰比继承更加灵活. 就像你有一把狙击枪它需要消音的功能,我们就可以装上一个消音器.要一个四倍镜就可以 装上四倍镜,然后是握把,枪架等等.可以把 ...

  8. js设计模式抽象工厂模式

    抽象工厂模式(Abstract Factory) 通过类的抽象使得业务适用于一个产品类簇的创建,而不负责创建某一类产品的实例. JS中是没有直接的抽象类的,因此我们需要在类的方法中抛出错误来模拟抽象类 ...

  9. JS设计模式---(代理模式篇)

    代理模式,简单的理解就是有一个代理人的角色,会去帮你谈事情.相当于明星身边的经纪人所做的事情一样. 举个例子,js中的事件委托机制想必大家都不陌生.没错,事件委托机制也是一个代理模式. <ul ...

最新文章

  1. Oracle 9i 从9.2.0.1升级到 9.2.0.6 步骤
  2. 关键基础设施是否会成为DDoS攻击的新目标?答案是不大会
  3. Joomla!网站扫描工具joomscan
  4. 启明云端分享|在应用SSD201\SSD202D 核心板时,文件系统只读相关问题解决
  5. 浅谈unity中gamma空间和线性空间
  6. Pixhawk之姿态解算篇(5)_ECF/EKF/GD介绍
  7. Lambda表达式使用2
  8. java 注释添加引用_java – 如何引用注释处理中的方法的实现?
  9. 【雷达与对抗】【2014.06】荷兰人工育滩工程Sand Motor的X波段雷达深度反演模型研制
  10. alize blue_泽野弘之 | 明明可以靠才华,却非要用脸滚键盘的神曲缔造者
  11. 短视频去水印接口支持全网解析源码/自定义API接口
  12. java 开发脚本视频_你写脚本,AI自动剪视频:13分钟完成剪辑师7小时创作
  13. 傻白入门芯片设计,盘点计算机体系结构顶会
  14. java下载excel导入excel读取excel数据,将数据插入数据库
  15. 判断一无符号整数的二进制形式中是否包含偶数个1
  16. 剑指 Offer 58 - II. 左旋转字符串
  17. BZOJ 3159: 决战 解题报告
  18. spark任务运行源码
  19. matlab 振动信号 阀值去噪,基于MATLAB的振动信号去噪研究
  20. 东南大学破格保研挂科_给挂科同学的建议

热门文章

  1. 分享:SringBuffer与String的区别
  2. zabbix监控实践解析(历史记录附近乱码、图表显示乱码)
  3. Elasticsearch1.x 基于lc-pinyin和ik分词实现 中文、拼音、同义词搜索
  4. Swift 范的 CGRect、CGSize 和 CGPoint
  5. 设计模式学习笔记-观察者模式(转)
  6. Bitmap 索引 vs. B-tree 索引:如何选择以及何时使用?——2-5
  7. 客户就可以查看到货物签收信息
  8. 【剑指offer】不使用新变量,交换两个变量的值,C++实现
  9. 有年味的年会才够味|第12届信息化领袖峰会
  10. Tomcat8中的并发ConcurrentDateFormat的实现