好程序员分享Javascript设计模式
方法一 对象字面量表示法
在对象字面量表示法中,一个对象被描述为一组包含在大括号中,以逗号分隔的 name/value 对。对象内的名称可以是字符串或标识符,后面跟着一个冒号。对象中最后一个 name/value 对不加逗号,否则会出错。
/**
- <p><font size="3"> * 使用字面量表示法定义模块</font></p>
- <p><font size="3"> */</font></p>
- <p><font size="3"> var myModule = {</font></p>
- <p><font size="3"> myProperty: "someValue",</font></p>
- <p><font size="3"> myConfig: {</font></p>
- <p><font size="3"> useCaching: true,</font></p>
- <p><font size="3"> language: "en"</font></p>
- <p><font size="3"> },</font></p>
- <p><font size="3"> myMethod: function () {</font></p>
- <p><font size="3"> console.log("the first method");</font></p>
- <p><font size="3"> },</font></p>
- <p><font size="3"> myMethod2: function () {</font></p>
- <p><font size="3"> console.log("the second method");</font></p>
- <p><font size="3"> },</font></p>
- <p><font size="3"> };</font></p>
console.log(myModule.myProperty); // someValue
- <p><font size="3"> console.log(myModule.myConfig); // {useCaching: true, language: 'en'}</font></p>
- <p><font size="3"> console.log(myModule.myConfig.useCaching); // true</font></p>
- <p><font size="3"> myModule.myMethod(); // the first method</font></p>
- <p><font size="3"> myModule.myMethod2(); // the second method</font></p>
方法二 Module模式
Module模式使用闭包封装“私有”状态和组织。它提供了一种包装混合公有/私有方法和变量的方式
,防止其污染全局命名空间,防止其泄露到全局作用域。通过该模式,只需返回一个公有API,而其他的一切则都维持在私有闭包里。
/**
- <p><font size="3"> * Module方法定义</font></p>
- <p><font size="3"> */</font></p>
- <p><font size="3"> var myNameSpace = (function () {</font></p>
- <p><font size="3"> // 私有变量</font></p>
- <p><font size="3"> var myPrivateVar = 0;</font></p>
- <p><font size="3"> // 私有函数</font></p>
- <p><font size="3"> var myPrivateMethod = function (foo) {</font></p>
- <p><font size="3"> console.log(foo);</font></p>
- <p><font size="3"> };</font></p>
- <p><font size="3"> // 公有API</font></p>
- <p><font size="3"> return {</font></p>
- <p><font size="3"> // 公有变量</font></p>
- <p><font size="3"> myPublicVar: "foo",</font></p>
- <p><font size="3"> // 公有方法</font></p>
- <p><font size="3"> myPublicFunction: function (bar) {</font></p>
- <p><font size="3"> // 操作私有变量</font></p>
- <p><font size="3"> myPrivateVar ++;</font></p>
- <p><font size="3"> // 调用私有函数</font></p>
- <p><font size="3"> myPrivateMethod(bar);</font></p>
- <p><font size="3"> },</font></p>
- <p><font size="3"> // 公有方法二</font></p>
- <p><font size="3"> myPublicFunction2: function () {</font></p>
- <p><font size="3"> console.log("success");</font></p>
- <p><font size="3"> }</font></p>
- <p><font size="3"> };</font></p>
- <p><font size="3"> }) ();</font></p>
console.log(myNameSpace.myPrivateVar); // undefined
- <p><font size="3"> console.log(myNameSpace.myPrivateVar); // undefined</font></p>
- <p><font size="3"> console.log(myNameSpace.myPublicVar); // foo</font></p>
- <p><font size="3"> console.log(myNameSpace.myPublicFunction); // Function</font></p>
- <p><font size="3"> myNameSpace.myPublicFunction2(); // success</font></p>
- <p><font size="3"> myNameSpace.myPublicFunction("i am first"); // i am first</font></p>
好程序员分享Javascript设计模式的更多相关文章
- 好程序员分享Web前端面试题汇总JS篇之跨域问题
为什么80%的码农都做不了架构师?>>> 好程序员分享Web前端面试题汇总JS篇之跨域问题,接着上一篇文章我们继续来探讨web前端面试必备面试题. 跨域解决方案 1. 通过jso ...
- C++程序员的javascript教程
本文主要目的是向c++程序员阐述javascript的编程思想,以及编程中的误区. 变量声明: 1.变量声明的解析早于代码运行.JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变 ...
- 好程序员分享该如何选择background-image和img标签
好程序员分享该如何选择background-image和img标签,用img标签 如果你希望别人打印页面时候包含这张图片请使用img标签 当这张图片有非常有意义的语义,比如警告图标,请使用img标签及 ...
- 好程序员分享居中一个float元素
好程序员分享居中一个float元素,我们布局的时候,用margin来设置float元素的外边距来达到效果.对于,在文档流中的元素,我们很容易让它水平居中,只要给元素设置一个固定的宽度,用margin: ...
- 拿到蚂蚁金服的offer是一种什么体验?3年Java程序员分享面经
前言:我是一名三年的Java程序员,之前一直是在外包公司工作的.在这个月五号的时候,通过我的学长做内推,有了去蚂蚁金服面试的机会.我是在12号接到的电话面试的,因为蚂蚁金服需要7天的简历评估的.还有就 ...
- 写给C#程序员的javascript说明: 各类型变量和prototype
在javascript中存在类似的私有变量 公有变量和静态变量 私有: var AA=function(){ var aa="im private"; }; 私有变量通过闭包访问. ...
- 程序员利用javascript代码开发捕鱼游戏
面试这么成功,全靠这个捕鱼游戏来完成,看的就是里面javascript代码,所以说前端最重要的还是javascript这一关,不管是现在HTML5时代还是以后如何,javascript永远不会落后,大 ...
- 好程序员分享DIV+CSS3和html5+CSS3有什么区别
DIV+CSS3和html5+CSS3有什么区别,不管是DIV+CSS3还是html5+CSS3,他们都是我们对网页开发布局方式的统称,但是DIV+CSS3作为网页的基础开发这句话其实并不严谨,因为而 ...
- 好程序员分享ApacheSpark常见的三大误解
误解一:Spark是一种内存技术 大家对Spark最大的误解就是其是一种内存技术(in-memorytechnology).其实不是这样的!没有一个Spark开发者正式说明这个,这是对Spark计算过 ...
随机推荐
- 程序员晋级CTO之路的8大准则
推荐阅读: 大数据智慧平台落地方案 Nginx + 阿里云SSL + tomcat 实现https访问代理 永远别忘了TD 再确认测试代码前,先找别人帮你检查下是否无误.在别人做之前尽量检查出bug并 ...
- c3p0链接池配置使用
c3p0链接池初步使用:直接上代码 c3p0是开源面粉的连接池,目前使用它的开源项目主要有:Spring,Hibernate等,使用时需要导入相关jar包及配置文件c3p0-config.xml文件 ...
- Java 去除字符串中的空白字符
通过String的trim()方法只能去掉字符串两端的空格字符,但是对于\t \n等其它空白字符确不能去掉,因此需通过正则表达式,将其中匹配到的空白字符去掉,代码如下: protected Strin ...
- 利用顶点位移进行VR畸变校正
VR开发的最大挑战之一是对高帧率与高分辨率结合的要求.我们通过把顶点转化为“镜头空间”,删除了需要全屏渲染的纹理,这样就可以大规模提高手机性能. 下面的技术使用谷歌的Cardboard Unity S ...
- 全方位理解Android权限之底层实现概览
0000 这个阶段搞了很多和Android文件权限相关的问题,虽然一知半解,但也算是对Android权限机制有一些自己的理解.遂将这些内容整理出来.因为权限这部分涉及到的内容很多,故将知识分为几块内容 ...
- git 入门教程之协同开发
前面我们已经介绍过远程仓库的相关概念,不过那时并没有深入探讨,只是讲解了如何创建远程仓库以及推送最新工作成果到远程仓库,实际上远程仓库对于团队协同开发很重要,不仅仅是团队协同开发的基础,也是代码备份的 ...
- git 入门教程之 git 私服搭建教程
git 私服搭建教程 前几节我们的远程仓库使用的是 github 网站,托管项目大多是公开的,如果不想让任何人都能看到就需要收费,而且 github 网站毕竟在国外,访问速度太慢,基于上述两点原因,我 ...
- mysql数据表的基本操作:表结构操作,字段操作
本节介绍: 表结构操作 创建数据表. 查看数据表和查看字段. 修改数据表结构 删除数据表 字段操作 新增字段. 修改字段数据类型.位置或属性. 重命名字段 删除字段 首发时间:2018-02-18 ...
- Apache httpd.conf配置文件主要内容解释
1 ServerRoot 配置 ["ServerRoot" 主要用于指定Apache的安装路径,此选项参数值在安装Apache时系统会自动把Apache的路径写入.Windows安 ...
- 前端AntD框架的upload组件上传图片时遇到的一些坑
前言 本次做后台管理系统,采用的是 AntD 框架.涉及到图片的上传,用的是AntD的 upload 组件. 前端做文件上传这个功能,是很有技术难度的.既然框架给我们提供好了,那就直接用呗.结果用的时 ...