- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JS设计模式
JavaScript 设计模式 一直都在考虑这个月分享大家什么东西最好,原计划是打算写一些HTML5中JS方面的内容或者是AJAX方面的,可是自己由于表达能力,时间,还有个人工作方面的问题,这个还是等下个月再做分享吧^.^。
老规矩,开始正文以前先交代自己写这篇文章的目的和一些注意事项:
1.首先本人一直从事前端开发,所以除了JavaScript其他的语言了解不深,所以文章只会以JavaScript语言的角度去论证;
2.其实我个人在项目用过的模式也不多,对模式的概念的理解也没有那么抽象,所以最近在面试中如果面试官问到与模式相关的问题,自己感觉在对答过程中很郁闷,很多东西表达不清楚,于是就找了些相关资料,才会有这篇文章分享;
3.JavaScript模式与前端的工作和成长密不可分,因为这确实不是一个简单的话题,所以我只能尽力用简单表达和例子阐明,而且园子里有很多的高手,所以希望大家踊跃发言(由于水平有限,请大家多多指教,希望嘴下留情);
4.由于这篇文章更多的只是想起到一个介绍和讲解的作用,并不打算对每种模式进行细致的分析,所以每种模式只用到一个至二个例子,可能会造成这个例子的表达并不是最优的或者不够全面,如果各位看官觉得不过瘾,可以再去查找相关资料;
5.做任何事都需要坚持,写博客也是一样,嘿嘿,每月至少一篇(文章确实较长,希望能对朋友们有所帮助,重点部分在前言中有介绍,大家可以选择感兴趣的模式进行深入)。
6.欢迎转载,不过请注明出处,谢谢。?
了解JavaScript设计模式我们需要知道的一些必要知识点:(内容相对基础,高手请跳过)
闭包:关于闭包这个月在园子里有几篇不错的分享了,在这我也从最实际的地方出发,说说我的理解。
1.闭包最常用的方式就是返回一个内联函数(何为内联函数?就是在函数内部声明的函数);
2.在JavaScript中有作用域和执行环境的问题,在函数内部的变量在函数外部是无法访问的,在函数内部却可以得到全局变量。由于种种原因,我们有时候需要得到函数内部的变量,可是用常规方法是得不到的,这时我们就可以创建一个闭包,用来在外部访问这个变量。
3.闭包的用途 主要就是上一点提到的读取函数内部变量,还有一个作用就是可以使这些变量一直保存在内存中。
4.使用闭包要注意,由于变量被保存在内存中,所以会对内存造成消耗,所以不能滥用闭包。解决方法是 在退出函数之前,将不使用的局部变量全部删除。
最后还是上一套闭包的代码吧,这样更直观。
1 function f(){ 2 var n = 999; 3 function f1(){ 4 alert(n+=1); 5 } 6 return f1; 7 } 8 var result = f(); 9 result(); // 100010 result(); // 100111 result(); // 1002
封装:通过将一个方法或者属性声明为私用的,可以让对象的实现细节对其他对象保密以降低对象之间的耦合程度,可以保持数据的完整性并对其修改方式加以约束,这样可以是代码更可靠,更易于调试。封装是面向对象的设计的基石。
尽管JavaScript是一门面向对象的语言,可它并不具备将成员声明为公用或私用的任何内部机制,所以我们只能自己想办法实现这种特性。下面还是通过一套完整的代码去分析,介绍什么是私有属性和方法,什么是特权属性和方法,什么是公有属性和方法,什么是公有静态属性和方法。
私有属性和方法:函数有作用域,在函数内用var 关键字声明的变量在外部无法访问,私有属性和方法本质就是你希望在对象外部无法访问的变量。
特权属性和方法:创建属性和方法时使用的this关键字,因为这些方法定义在构造器的作用域中,所以它们可以访问到私有属性和方法;只有那些需要直接访问私有成员的方法才应该被设计为特权方法。
共有属性和方法:直接链在prototype上的属性和方法,不可以访问构造器内的私有成员,可以访问特权成员,子类会继承所有的共有方法。
共有静态属性和方法:最好的理解方式就是把它想象成一个命名空间,实际上相当于把构造器作为命名空间来使用。
1 /* -- 封装 -- */ 2 var _packaging = function(){ 3 //私有属性和方法 4 var name = Darren; 5 var method1 = function(){ 6 //... 7 } 8 //特权属性和方法 9
您可能关注的文档
- 德语足球用语和谚语.doc
- TEM8英翻汉翻译模拟题.docx
- 1229中国简史【英语版本二】.doc
- BB四级水平阅读测试2.doc
- 华师网络学院欧洲文化入门阅读1.doc
- 1995-2012历年专八 英译汉 翻译真题.doc
- 高一英语人教新课标必修一Unit 2 English around the world试题.doc
- 安徽省合肥皖智高考复读学校2014届高三上学期第二次半月考试 英语试题 Word版含答案.doc
- Proposal英文版.doc
- 怎样写好一个research proposal2.doc
- 九年级上学期数学压轴必考题型——二次函数的图像和性质(含答案).pdf
- 2026届云南三校高考备考实用性联考卷(四)物理试卷(含答案详解).pdf
- 《GBT 34540-2017 甲醇转化变压吸附制氢系统技术要求》专题研究报告.pptx
- 《GBT 34544-2017 小型燃料电池车用低压储氢装置安全试验方法》专题研究报告.pptx
- 湖南某中学2025-2026学年高一年级上册期中考试数学试卷+答案.pdf
- 陕西省汉中市2026届高三上学期第一次校际联考数学试题(含解析).pdf
- 湖南省2025-2026学年高一年级上册期中考试物理模拟卷02(原卷版及解析).pdf
- 湖南省2025-2026学年高一年级上册期中考试物理模拟卷03(原卷版及解析).pdf
- 《GBT 34553-2017 门在地震作用下角变形时的开启性能试验方法》专题研究报告.pptx
- GB_T 1182-2018产品几何技术规范(GPS) 几何公差 形状、方向、位置和跳动公差标注》专题研究报告.pptx
原创力文档


文档评论(0)