方法一 对象字面量表示法

  在对象字面量表示法中,一个对象被描述为一组包含在大括号中,以逗号分隔的 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. hive -f 传递参数

    hive -f 在执行sql脚本文件的时候是可以传递参数的,但是要注意hive版本: 注意:hive在0.9版本之前是不支持-f传递参数的,只有1.0之后才支持次功能. 使用如下: 1.创建sql脚本 ...

  2. Web Worker 初探

    什么是Web Worker? Web Worker 是Html5 提出的能够在后台运行javascript的对象,独立于其他脚本,不会影响页面的性能,也不会影响你继续对于页面进行操作.通俗点讲,就是后 ...

  3. vue(一)使用vue-cli搭建项目

    一.安装node.js 去官网下载安装node.js:    https://nodejs.org/en/ 安装完成后,可以在命令行工具(Windows是cmd,苹果是终端控制)输入node -v 和 ...

  4. mapper加载的3种方法

    <!-- mapper加载有3种方法: 1:通过resource或url加载单个mapper 2:通过mapper接口类名加载单个mapper 3:通过package批量加载多个mapper(推 ...

  5. node起步

    首先,在项目目录下创建一个叫 app.js 的文件,并写如以下代码: app.js const http = require('http'); const hostname = '127.0.0.1' ...

  6. 【代码笔记】Web-Javascript-Javascript typeof

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  7. Java 线程方法

    线程标识相关 方法 描述 public Thread(Runnable target, String name)  带参数的构造方法, 第二个参数是线程名称 public static Thread ...

  8. 在centos7上编译安装nginx

    题前,先放一个有图有真相的博客链接:https://www.cnblogs.com/zhang-shijie/p/5294162.html 虽然别人说的很详细,但还是记录一下 1.VMWare Wor ...

  9. 深圳共创力“研发管理&知识管理”高端研讨交流会在深圳举办!

    2017/4/8,由深圳市共创力企业管理咨询公司举办的“研发管理&知识管理”高端研讨会在深圳市南山区圣淘沙国际酒店(翡翠店)隆重召开.此次研讨会由共创力总经理.首席顾问杨学明先生主持.研讨会先 ...

  10. java实现小学生四则运算

    GitHub地址:https://github.com/TaoTaoLv1/arithmetic 结对伙伴:叶文涛 项目要求: 实现一个自动生成小学四则运算题目的命令行程序. 使用 -n 参数控制生成 ...