使用模式来组织代码有很多优点:使代码的结构更清晰,逻辑性更强,更容易维护。还可以避免很多错误。

首先,在javascript主要分为两大类:

  • 编程模式—— 一些专门为javascript语言开发出的最佳实践方案;
  • 设计模式—— 这些模式与具体语言的无关,他们主要来自《设计模式》一书;

编程模式

  • 行为隔离
  • 命名空间
  • 初始化分支
  • 延迟定义
  • 配置对象
  • 私有变量和方法
  • 特权方法
  • 私有函数的共有化
  • 自执行的方法
  • 链式调用
  • JSON

设计模式

  • 单体模式
  • 工厂模式
  • 装饰器模式
  • 观察者模式

模块模式是下面多种模式的组合:

  • 命名空间
  • 即时函数
  • 私有和特权成员
  • 声明依赖

即时函数就是利己调用函数

私有成员是函数里面申明一个变量,把这个变量放到闭包返回。

声明依赖即在里面的函数把很长的全局变量名字赋值给一个局部变量

步骤

  • 第一步

    该模式的第一步就是建立一个命名空间。

  • 第二步

    接着是定义该模块,然后需要保护私有的时候,就在该即时函数中创建一个闭包,闭包是赋给了一个对象,然后返回该对象。需要使用该模块时,直接调用相应的对象(方法)。

模块模式得到了广泛的应用,强烈建议使用这种方式来组织代码。

javascript模式之模块模式的更多相关文章

  1. 初涉JavaScript模式 (11) : 模块模式

    引子 这篇算是对第9篇中内容的发散和补充,当时我只是把模块模式中的一些内容简单的归为函数篇中去,在北川的提醒下,我才发觉这是非常不严谨的,于是我把这些内容拎出来,这就是这篇的由来. 什么是模块模式 在 ...

  2. JavaScript基础对象创建模式之模块模式(Module Pattern)(025)

    模块模式可以提供软件架构,为不断增长的代码提供组织形式.JavaScript没有提供package的语言表示,但我们可以通过模块模式来分解并组织 代码块,这些黑盒的代码块内的功能可以根据不断变化的软件 ...

  3. 对象创建模式之模块模式(Module Pattern)

    模块模式可以提供软件架构,为不断增长的代码提供组织形式.JavaScript没有提供package的语言表示,但我们可以通过模块模式来分解并组织代码块,这些黑盒的代码块内的功能可以根据不断变化的软件需 ...

  4. javascript 设计模式-----模块模式

    在一些大的项目中经常使用到模块,在这里,我们将了解一下什么是模块模式.模块模式最简单的方法大家一定会用过,如下所示: var a = { b : 1, c : 2 } 这样一个对象的直接量其实就已经是 ...

  5. Js模块模式

    模块模式 索引 引子 什么是模块模式 命名空间模式 声明依赖 私有和特权成员 即时函数 揭示模块模式 结语 引子 这篇算是对第9篇中内容的发散和补充,当时我只是把模块模式中的一些内容简单的归为函数篇中 ...

  6. JavaScript基础对象创建模式之命名空间(Namespace)模式(022)

    JavaScript中的创建对象的基本方法有字面声明(Object Literal)和构造函数两种,但JavaScript并没有特别的语法来表示如命名空间.模块.包.私有属性.静态属性等等面向对象程序 ...

  7. php在apache中一共有三种工作方式:CGI模式、FastCGI模式、Apache 模块DLL

    php在apache中一共有三种工作方式:CGI模式.FastCGI .FastCGI是什么? FastCGI是语言无关的.可伸缩架构的CGI开放扩展,其主要行 为是将CGI解释器进程保持在内存中并因 ...

  8. (转)深入理解JavaScript 模块模式

    深入理解JavaScript 模块模式 (原文)http://www.cnblogs.com/starweb/archive/2013/02/17/2914023.html 英文:http://www ...

  9. JavaScript设计模式-单例模式、模块模式(转载 学习中。。。。)

    (转载地址:http://technicolor.iteye.com/blog/1409656) 之前在<JavaScript小特性-面向对象>里面介绍过JavaScript面向对象的特性 ...

随机推荐

  1. 收集一些有用的docker镜像

    https://hub.docker.com/explore/  是star排名靠前的image =================================================== ...

  2. AT指令获取基站信息

    AT+CREG 网络注册和漫游    命令发送(command):     AT+CREG=<mode>     命令响应(Response):     +CREG :<mode&g ...

  3. centos6.5 升级安装pcre 8.39版本

    1.查看系统pcre安装情况 rpm -qa pcre 2.卸载系统自带的旧版本 rpm -e --nodeps pcre 3.下载新版安装 地址:ftp://ftp.csx.cam.ac.uk/pu ...

  4. 使用 ServiceStack.Text 序列化 json的实现代码【转】

    转自:http://www.jb51.net/article/38338.htm 今天发篇文章总结下自己使用 ServiceStack.Text 来序列化 json.它的速度比 Newtonsoft. ...

  5. IOS培训还值得么

    文章结构 1培训机构 各方面的评价 培训安排 收获 2 市场 就业 是否饱和 3 姿势 做好的事情 IOS这几年在IT界一直是热门的讨论话题,之前看着拉钩出品的北上广高薪岗位的人员技术流动也主要指向这 ...

  6. SSHD服务搭建

    SSH协议:安全外壳协议.为Secure Shell 缩写.SSH为建立在应用层和传输层基础上的安全协议.   1.检查SSH服务端安装情况 [root@rhel6_84 ~]# rpm -qpi / ...

  7. asp.net mvc js 获取model值。

    cshtml页面部分代码: div class="col-sub">          @using (Html.BeginForm("SaveTTMallConf ...

  8. cookie禁用了,session还能用吗?

    Cookie与 Session,一般认为是两个独立的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案.但为什么禁用Cookie就不能得到Session ...

  9. 64位系统上运行32位程序能否申请到8G内存?

    申请不到,因为64为系统在运行32位程序的时候只是为了向下兼容而已,对于32位程序来讲,申请8G的存储空间没有任何意义,因为32位的程序最大寻址空间只有4G,32位程序在编译之后的机器代码也只有32位 ...

  10. 事实证明,abstract类除了不能用new实例化和类没什么区别

    abstract类是抽象类,不能够实例化,大家都知道,abstract类往往和接口interface一块儿使用,针对接口中一些公共的方法进行实现,然后实体类去继承抽象类和接口.虽然abstract类不 ...