好程序员分享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计算过 ...
随机推荐
- SSH框架用法,及作用(在一位菜鸟使用半年之后归纳的总结)
SSH框架从接触以来改变了我对代码的编写方式,从最初开始学习到勉强掌握可以说得到不少心得,以下内容出自java初学者对SSH的理解,如有不对的地方还请谅解,希望可以提出来与我交流,谢谢! SSH顾名思 ...
- HTML空格符号 nbsp; ensp; emsp; 介绍以及实现中文对齐的方法
一:不同空格符合的区别 半角的不断行的空白格(推荐使用) 半角的空格 全角的空格 详细的含义: :这是我们使用最多的空格,也就是按下space键产生的空格.在HTML中,如果你用空格 ...
- 小tips:JS操作数组的slice()与splice()方法
slice(start, end) slice()方法返回从参数指定位置开始到当前数组末尾的所有项.如果有两个参数,该方法返回起始和结束位置之间的项,但不包括结束位置的项. var colors = ...
- 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_ ...
- 2017-11-09 中英文代码对比系列之Java一例
原文: https://zhuanlan.zhihu.com/p/30905033. 作者为本人. 这个系列将对同一段代码进行中文命名和英文命名两个版本的比较. 目的包括, 演示中文命名, 发现命名时 ...
- spring boot mybatis 打成可执行jar包后启动UnsatisfiedDependencyException异常
我的spring boot + mybatis项目在idea里面执行正常,但发布测试环境打成可执行jar包后就启动失败,提示错误如下: [ ERROR] [2018-08-30 17:23:48] o ...
- ACL技术总结
1.ACL的全称是访问控制列表,本质上是定义一组策略,以便指导报文在交换机内部的转发行为. 2.要配置策略,首先要明确ACL应用的对象,可以是针对端口,也可以是针对特殊的一条流. 针对端口,就是指端口 ...
- 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 ...
- 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" ...
- chmod命令-权限
---··[转] hmod命令:改变文件权限. 一:符号模式: 命令格式:chmod [who] operator [permission] filename who包含的选项 ...