方法一 对象字面量表示法

  在对象字面量表示法中,一个对象被描述为一组包含在大括号中,以逗号分隔的 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. SSH框架用法,及作用(在一位菜鸟使用半年之后归纳的总结)

    SSH框架从接触以来改变了我对代码的编写方式,从最初开始学习到勉强掌握可以说得到不少心得,以下内容出自java初学者对SSH的理解,如有不对的地方还请谅解,希望可以提出来与我交流,谢谢! SSH顾名思 ...

  2. HTML空格符号 nbsp; ensp; emsp; 介绍以及实现中文对齐的方法

    一:不同空格符合的区别   半角的不断行的空白格(推荐使用)    半角的空格    全角的空格 详细的含义:  :这是我们使用最多的空格,也就是按下space键产生的空格.在HTML中,如果你用空格 ...

  3. 小tips:JS操作数组的slice()与splice()方法

    slice(start, end) slice()方法返回从参数指定位置开始到当前数组末尾的所有项.如果有两个参数,该方法返回起始和结束位置之间的项,但不包括结束位置的项. var colors = ...

  4. Mobius反演的套路

    T1 \(\sum_{i=1}^N \sum_{j=1}^M [(i,j)=1]\) \(f(d)=\sum_{i=1}^N \sum_{j=1}^M [(i,j)=d]\) \(g(d)=\sum_ ...

  5. 2017-11-09 中英文代码对比系列之Java一例

    原文: https://zhuanlan.zhihu.com/p/30905033. 作者为本人. 这个系列将对同一段代码进行中文命名和英文命名两个版本的比较. 目的包括, 演示中文命名, 发现命名时 ...

  6. spring boot mybatis 打成可执行jar包后启动UnsatisfiedDependencyException异常

    我的spring boot + mybatis项目在idea里面执行正常,但发布测试环境打成可执行jar包后就启动失败,提示错误如下: [ ERROR] [2018-08-30 17:23:48] o ...

  7. ACL技术总结

    1.ACL的全称是访问控制列表,本质上是定义一组策略,以便指导报文在交换机内部的转发行为. 2.要配置策略,首先要明确ACL应用的对象,可以是针对端口,也可以是针对特殊的一条流. 针对端口,就是指端口 ...

  8. Visualization of Detail Point Set by Local Algebraic Sphere Fitting

    Refers to Dynamic Sampling and Rendering of Algebraic Point Set Surfaces Growing Least Squares for t ...

  9. The server principal "sa" is not able to access the database "xxxx" under the current security context

    在SQL Server服务器上一个作业执行时,遇到下面错误信息: Message: Executed as user: dbo. The server principal "sa" ...

  10. chmod命令-权限

    ---··[转] hmod命令:改变文件权限.         一:符号模式:     命令格式:chmod [who] operator [permission] filename who包含的选项 ...