深入理解javascript系列

深入理解javascript系列

ID:16343451

大小:62.00 KB

页数:12页

时间:2018-08-09

深入理解javascript系列_第1页
深入理解javascript系列_第2页
深入理解javascript系列_第3页
深入理解javascript系列_第4页
深入理解javascript系列_第5页
资源描述:

《深入理解javascript系列》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、GeneratedbyUnregisteredBatchDOC&DOCXConverter2012.4.816.1606,pleaseregister!深入理解JavaScript系列(3):全面解析Module模式简介Module模式是JavaScript编程中一个非常通用的模式,一般情况下,大家都知道基本用法,本文尝试着给大家更多该模式的高级使用方式。首先我们来看看Module模式的基本特征:1.模块化,可重用2.封装了变量和function,和全局的namaspace不接触,松耦合3.只暴露可用public的方法,其它私有方法全

2、部隐藏关于Module模式,最早是由YUI的成员EricMiraglia在4年前提出了这个概念,我们将从一个简单的例子来解释一下基本的用法(如果你已经非常熟悉了,请忽略这一节)。基本用法先看一下最简单的一个实现,代码如下:varCalculator=function(eq){//这里可以声明私有成员vareqCtl=document.gGeneratedbyUnregisteredBatchDOC&DOCXConverter2012.4.816.1606,pleaseregister!etElementById(eq);return{

3、//暴露公开的成员add:function(x,y){varval=x+y;eqCtl.innerHTML=val;}};};我们可以通过如下的方式来调用:varcalculator=newCalculator('eq');calculator.add(2,2);大家可能看到了,每次用的时候都要new一下,也就是说每个实例在内存里都是一份copy,如果你不需要传参数或者没有一些特殊苛刻的要求的话,我们可以在最后一个}后面加上一个括号,来达到自执行的目的,这样该实例在内存中只会存在一份copy,不过在展示他的优点之前,我们还是先来看看这

4、个模式的基本使用方法吧。匿名闭包GeneratedbyUnregisteredBatchDOC&DOCXConverter2012.4.816.1606,pleaseregister!匿名闭包是让一切成为可能的基础,而这也是JavaScript最好的特性,我们来创建一个最简单的闭包函数,函数内部的代码一直存在于闭包内,在整个运行周期内,该闭包都保证了内部的代码处于私有状态。(function(){//...所有的变量和function都在这里声明,并且作用域也只能在这个匿名闭包里//...但是这里的代码依然可以访问外部全局的对象}()

5、);注意,匿名函数后面的括号,这是JavaScript语言所要求的,因为如果你不声明的话,JavaScript解释器默认是声明一个function函数,有括号,就是创建一个函数表达式,也就是自执行,用的时候不用和上面那样在new了,当然你也可以这样来声明:(function(){/*内部代码*/})();不过我们推荐使用第一种方式,关于函数自执行,我后面会有专门一篇文章进行详解,这里就不多说了。引用全局变量GeneratedbyUnregisteredBatchDOC&DOCXConverter2012.4.816.1606,plea

6、seregister!JavaScript有一个特性叫做隐式全局变量,不管一个变量有没有用过,JavaScript解释器反向遍历作用域链来查找整个变量的var声明,如果没有找到var,解释器则假定该变量是全局变量,如果该变量用于了赋值操作的话,之前如果不存在的话,解释器则会自动创建它,这就是说在匿名闭包里使用或创建全局变量非常容易,不过比较困难的是,代码比较难管理,尤其是阅读代码的人看着很多区分哪些变量是全局的,哪些是局部的。不过,好在在匿名函数里我们可以提供一个比较简单的替代方案,我们可以将全局变量当成一个参数传入到匿名函数然后使用

7、,相比隐式全局变量,它又清晰又快,我们来看一个例子:(function($,YAHOO){//这里,我们的代码就可以使用全局的jQuery对象了,YAHOO也是一样}(jQuery,YAHOO));现在很多类库里都有这种使用方式,比如jQuery源码。不过,有时候可能不仅仅要使用全局变量,而是也想声明全局变量,如何做呢?我们可以通过匿名函数的返回值来返回这个全局变量,这也就是一个基本的Module模式,来看一个完整的代码:varblogModule=(function(){varmy={},privateName="博客园";func

8、tionprivateAddTopic(data){//这里是内部处理代码GeneratedbyUnregisteredBatchDOC&DOCXConverter2012.4.816.1606,pleaseregist

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。