方法一 对象字面量表示法

  在对象字面量表示法中,一个对象被描述为一组包含在大括号中,以逗号分隔的 name/value 对。对象内的名称可以是字符串或标识符,后面跟着一个冒号。对象中最后一个 name/value 对不加逗号,否则会出错。

  /**

  1. <p><font size="3">  * 使用字面量表示法定义模块</font></p>
  2. <p><font size="3">  */</font></p>
  3. <p><font size="3">  var myModule = {</font></p>
  4. <p><font size="3">  myProperty: "someValue",</font></p>
  5. <p><font size="3">  myConfig: {</font></p>
  6. <p><font size="3">  useCaching: true,</font></p>
  7. <p><font size="3">  language: "en"</font></p>
  8. <p><font size="3">  },</font></p>
  9. <p><font size="3">  myMethod: function () {</font></p>
  10. <p><font size="3">  console.log("the first method");</font></p>
  11. <p><font size="3">  },</font></p>
  12. <p><font size="3">  myMethod2: function () {</font></p>
  13. <p><font size="3">  console.log("the second method");</font></p>
  14. <p><font size="3">  },</font></p>
  15. <p><font size="3">  };</font></p>

  console.log(myModule.myProperty); // someValue

  1. <p><font size="3">  console.log(myModule.myConfig); // {useCaching: true, language: 'en'}</font></p>
  2. <p><font size="3">  console.log(myModule.myConfig.useCaching); // true</font></p>
  3. <p><font size="3">  myModule.myMethod(); // the first method</font></p>
  4. <p><font size="3">  myModule.myMethod2(); // the second method</font></p>

  方法二 Module模式
  Module模式使用闭包封装“私有”状态和组织。它提供了一种包装混合公有/私有方法和变量的方式
  ,防止其污染全局命名空间,防止其泄露到全局作用域。通过该模式,只需返回一个公有API,而其他的一切则都维持在私有闭包里。
  /**

  1. <p><font size="3">  * Module方法定义</font></p>
  2. <p><font size="3">  */</font></p>
  3. <p><font size="3">  var myNameSpace = (function () {</font></p>
  4. <p><font size="3">  // 私有变量</font></p>
  5. <p><font size="3">  var myPrivateVar = 0;</font></p>
  6. <p><font size="3">  // 私有函数</font></p>
  7. <p><font size="3">  var myPrivateMethod = function (foo) {</font></p>
  8. <p><font size="3">  console.log(foo);</font></p>
  9. <p><font size="3">  };</font></p>
  10. <p><font size="3">  // 公有API</font></p>
  11. <p><font size="3">  return {</font></p>
  12. <p><font size="3">  // 公有变量</font></p>
  13. <p><font size="3">  myPublicVar: "foo",</font></p>
  14. <p><font size="3">  // 公有方法</font></p>
  15. <p><font size="3">  myPublicFunction: function (bar) {</font></p>
  16. <p><font size="3">  // 操作私有变量</font></p>
  17. <p><font size="3">  myPrivateVar ++;</font></p>
  18. <p><font size="3">  // 调用私有函数</font></p>
  19. <p><font size="3">  myPrivateMethod(bar);</font></p>
  20. <p><font size="3">  },</font></p>
  21. <p><font size="3">  // 公有方法二</font></p>
  22. <p><font size="3">  myPublicFunction2: function () {</font></p>
  23. <p><font size="3">  console.log("success");</font></p>
  24. <p><font size="3">  }</font></p>
  25. <p><font size="3">  };</font></p>
  26. <p><font size="3">  }) ();</font></p>

  console.log(myNameSpace.myPrivateVar); // undefined

    1. <p><font size="3">  console.log(myNameSpace.myPrivateVar); // undefined</font></p>
    2. <p><font size="3">  console.log(myNameSpace.myPublicVar); // foo</font></p>
    3. <p><font size="3">  console.log(myNameSpace.myPublicFunction); // Function</font></p>
    4. <p><font size="3">  myNameSpace.myPublicFunction2(); // success</font></p>
    5. <p><font size="3">  myNameSpace.myPublicFunction("i am first"); // i am first</font></p>

好程序员分享Javascript设计模式的更多相关文章

  1. 好程序员分享Web前端面试题汇总JS篇之跨域问题

    为什么80%的码农都做不了架构师?>>>   好程序员分享Web前端面试题汇总JS篇之跨域问题,接着上一篇文章我们继续来探讨web前端面试必备面试题. 跨域解决方案 1. 通过jso ...

  2. C++程序员的javascript教程

    本文主要目的是向c++程序员阐述javascript的编程思想,以及编程中的误区.   变量声明: 1.变量声明的解析早于代码运行.JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变 ...

  3. 好程序员分享该如何选择background-image和img标签

    好程序员分享该如何选择background-image和img标签,用img标签 如果你希望别人打印页面时候包含这张图片请使用img标签 当这张图片有非常有意义的语义,比如警告图标,请使用img标签及 ...

  4. 好程序员分享居中一个float元素

    好程序员分享居中一个float元素,我们布局的时候,用margin来设置float元素的外边距来达到效果.对于,在文档流中的元素,我们很容易让它水平居中,只要给元素设置一个固定的宽度,用margin: ...

  5. 拿到蚂蚁金服的offer是一种什么体验?3年Java程序员分享面经

    前言:我是一名三年的Java程序员,之前一直是在外包公司工作的.在这个月五号的时候,通过我的学长做内推,有了去蚂蚁金服面试的机会.我是在12号接到的电话面试的,因为蚂蚁金服需要7天的简历评估的.还有就 ...

  6. 写给C#程序员的javascript说明: 各类型变量和prototype

    在javascript中存在类似的私有变量 公有变量和静态变量 私有: var AA=function(){ var aa="im private"; }; 私有变量通过闭包访问. ...

  7. 程序员利用javascript代码开发捕鱼游戏

    面试这么成功,全靠这个捕鱼游戏来完成,看的就是里面javascript代码,所以说前端最重要的还是javascript这一关,不管是现在HTML5时代还是以后如何,javascript永远不会落后,大 ...

  8. 好程序员分享DIV+CSS3和html5+CSS3有什么区别

    DIV+CSS3和html5+CSS3有什么区别,不管是DIV+CSS3还是html5+CSS3,他们都是我们对网页开发布局方式的统称,但是DIV+CSS3作为网页的基础开发这句话其实并不严谨,因为而 ...

  9. 好程序员分享ApacheSpark常见的三大误解

    误解一:Spark是一种内存技术 大家对Spark最大的误解就是其是一种内存技术(in-memorytechnology).其实不是这样的!没有一个Spark开发者正式说明这个,这是对Spark计算过 ...

随机推荐

  1. Excel通用类工具(一)

    前言 最近项目中遇到要将MySQL数据库中的某些数据导出为Excel格式保存,在以前也写过这样的功能,这次就准备用以前的代码,但是看了一下,这次却不一样,因为在以前用到的都是导出一种或几种数据,种类不 ...

  2. 4. 泛型_EJ

    第23条: 不要在新代码中使用原生态类型 声明中具有一个或多个类型参数的类或接口,就是泛型类或接口.每种泛型都定义一组参数化的类型,每个泛型都定义一个原生态类型.例如List<E>相对应的 ...

  3. 2018年,JavaScript都经历了什么?

    摘要: 对JSer来说,这是很有意思的1年. 本文灵感来自JavaScript Weekly周报,欢迎大家订阅. The State of JavaScript 2018 The State of J ...

  4. 协程与Epoll的配合

    想快速了解协程与网络调用的原来么,那么请赶紧关闭本页,因为下面都是在扯淡. 这几天是端午假期,第一天大算照着网上一大堆基于ucontext来写协程的文章自己也写一个简单的协程实现.于是第一天我就开始动 ...

  5. CentOS 7上VNCServer的安装使用

    1.安装 yum install tigervnc tigervnc-server 2.配置 vncserver的配置,创建一个新的配置文件 cp /lib/systemd/system/vncser ...

  6. 如何用ABP框架快速完成项目(3) - 为什么要使用ABP和ABP框架简介

    首先先讲为什么要使用ABP? 当然是因为使用ABP可以快速完成项目啦. 时间就是金钱, 效率就是生命嘛   有了ABP, 你就节省了写如下模块的时间: CRUD数据库基本操作 校验 异常处理 日志 权 ...

  7. redis cluster是如何做到集两家之长的

    站在读写分离的层次看redis的时候,redis和master和slave存在明显的主从关系,也就是说master处于管理状态,salve跟着大哥混,master给小弟slave发粮食[发送内存快照数 ...

  8. Conccrent中 Unsafe类原理 以及 原子类AutomicXX的原理以及对Unsafe类的使用

    Unsafe类的介绍 Java中基于操作系统级别的原子操作类sun.misc.Unsafe,它是Java中对大多数锁机制实现的最基础类.请注意,JDK 1.8和之前JDK版本的中sun.misc.Un ...

  9. Linux 中提高的 SSH 的安全性

    SSH 是远程登录 Linux 服务器的最常见的方式.且 SSH 登录的时候要验证的,相对来讲会比较安全.那只是相对,下面会介绍一些方式提高 SSH 的安全性 SSH 的验证 而SSH 登录时有两种验 ...

  10. Android 线程交互

    在Android开发过程中,耗时操作是不允许写在主线程(UI线程)中的,以免由于等待时间过长而发生ANR.所以耗时操作需要创建子线程来完成,然而往往这些操作都需要与主线程进行通讯交互(例如更新主线程的 ...