好程序员分享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计算过 ...
随机推荐
- angular 拼接html 事件无效
主要是要引用$compile方法
- vuejs2.0实现分页组件,使用$emit进行事件监听数据传递
上一篇文章介绍了vuejs实现的简单分页,如果我有几个页面都需要有分页效果,不可能每个页面都去复制一下这段代码吧,意思是封装一下,变成通用的组件. 首先使用基础 Vue 构造器,创建一个“子类”,Vu ...
- POJ1201 Intervals(差分约束)
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 28416 Accepted: 10966 Description You ...
- AI产品经理成长路
AI产品经理成长路 https://www.jianshu.com/p/4b98314ad3c0 以下都是自己平时知识的一些总结,只是一些个人的愚见,下面出现的公司.书籍.视频.网站都是自己看过体验过 ...
- 折半插入排序算法的C++实现
折半插入排序思想和直接插入排序类似. 1)找到插入位置: 2)依次后移正确位置及后面的元素. 区别是查找插入位置的方法不同. 折半插入排序使用的折半查找法在一个已经有序的序列中找到查找位置. 注意,折 ...
- ArrayList在foreach删除倒数第二个元素不抛并发修改异常的问题
平时我们使用ArrayList比较多,但是我们是否知道ArrayList在进行foreach的时候不能直接通过list的add或者move方法进行删除呢, 原因就是在我们进行foreach遍历的时候, ...
- Android为TV端助力 deep link(深度链接)与自定义协议!
此自定义仅供参考! 首先打开androidManifest.xml 在MainActivity中添加如下内容: <activity android:name=".MainActivit ...
- 适用于VS C++环境的注释代码段,可以让你的代码被使用时有高可读性的注释
编码时,在对高级语言(C#/VB etc)函数的访问时,经常会有很明确的函数功能提示,参数提示,与返回值提示.微软的VisualStudio C++集成开发环境同样有这样的功能,只是常见开源的代码很少 ...
- (转载)彻底的理解:WebService到底是什么?
最近老是有人跟我提web service接口,怎么,怎么滴,我觉得很扎耳朵,web service是一种将服务器的服务封装起来的技术,表现为对外提供接口,所以,web service不是一种接口 !! ...
- Python GUI编程实例
import os from time import sleep from tkinter import * from tkinter.messagebox import showinfo class ...