JavaScript设计模式
目录第一篇面向对象编程第1章灵活的语言——JavaScript21.1入职第一天21.2函数的另一种形式21.3用对象收编变量31.4对象的另一种形式41.5真假对象41.6类也可以51.7一个检测类51.8方法还可以这样用61.9函数的祖先71.10可以链式添加吗81.11换一种方式使用方法9下章剧透10忆之获10我问你答10第2章写的都是看到的——面向对象编程112.1两种编程风格——面向过程与面向对象112.2包装明星——封装122.3传宗接代——继承192.4老师不止一位——多继承272.5多种调用方式——多态29下章剧透30忆之获31我问你答31第二篇创建型设计模式第3章神奇的魔术师——简单工厂模式343.1工作中的第一次需求343.2如果类太多,那么提供一个353.3一个对象有时也可代替许多类373.4你的理解决定你选择的方式38下章剧透39忆之获39我问你答39第4章给我一张名片——工厂方法模式404.1广告展现404.2方案的抉择414.3安全模式类424.4安全的工厂方法43下章剧透44忆之获44我问你答44第5章出现的都是幻觉——抽象工厂模式455.1带头模范——抽象类455.2幽灵工厂——抽象工厂模式465.3抽象与实现47下章剧透49忆之获49我问你答49第6章分即是合——建造者模式506.1发布简历506.2创建对象的另一种形式506.3创建一位应聘者52下章剧透53忆之获53我问你答54第7章语言之魂——原型模式557.1语言中的原型557.2创建一个焦点图557.3最优的解决方案567.4原型的拓展587.5原型继承58下章剧透59忆之获60我问你答60第8章一个人的寂寞——单例模式618.1滑动特效618.2命名空间的管理员628.3模块分明638.4创建一个小型代码库638.5无法修改的静态变量648.6惰性单例65下章剧透65忆之获66我问你答66第三篇结构型设计模式第9章套餐服务——外观模式689.1添加一个点击事件689.2兼容方式699.3除此之外709.4小型代码库70下章剧透71忆之获71我问你答72第10章水管弯弯——适配器模式7310.1引入jQuery7310.2生活中的适配器7310.3jQuery适配器7410.4适配异类框架7410.5参数适配器7510.6数据适配7610.7服务器端数据适配77下章剧透77忆之获77我问你答78第11章牛郎织女——代理模式7911.1无法获取图片上传模块数据7911.2一切只因跨域7911.3站长统计8011.4JSONP8111.5代理模板81下章剧透83忆之获83我问你答84第12章房子装修——装饰者模式8512.1为输入框的新需求8512.2装饰已有的功能对象8612.3为输入框添砖加瓦86下章剧透87忆之获87我问你答88第13章城市间的公路——桥接模式8913.1添加事件交互8913.2提取共同点9013.3事件与业务逻辑之间的桥梁9013.4多元化对象91下章剧透93忆之获93我问你答93第14章超值午餐——组合模式9414.1新闻模块十万火急9414.2餐厅里的套餐业务9514.3每个成员要有祖先9514.4组合要有容器类9614.5创建一个新闻类9714.6把新闻模块创建出来9914.7表单中的应用100下章剧透101忆之获101我问你答102第15章城市公交车——享元模式10315.1翻页需求10315.2冗余的结构10415.3享元对象10415.4实现需求10515.5享元动作106下章剧透108忆之获108我问你答108第四篇行为型设计模式第16章照猫画虎——模板方法模式11016.1提示框归一化11016.2美味的蛋糕11116.3创建基本提示框11116.4模板的原型方法11216.5根据模板创建类11316.6继承类也可作为模板类11316.7创建一个提示框11416.8创建多类导航11416.9创建导航更容易116下章剧透116忆之获116我问你答117第17章通信卫星——观察者模式11817.1团队开发的坎坷11817.2卫星的故事11817.3创建一个观察者11917.4拉出来溜溜12117.5使用前的思考12117.6大显身手12117.7对象间解耦12317.8课堂演练124下章剧透125忆之获125我问你答125第18章超级玛丽——状态模式12618.1最美图片12618.2分支判断的思考12618.3状态对象的实现12718.4状态对象演练12718.5超级玛丽12818.6状态的优化12918.7两种使用方式130下章剧透131忆之获131我问你答131第19章活诸葛——策略模式13219.1商品促销13219.2活诸葛13219.3策略对象13319.4诸葛奇谋13319.5缓冲函数13419.6表单验证13419.7算法拓展13519.8算法调用135下章剧透136忆之获136我问你答137第20章有序车站——职责链模式13820.1“半成品”需求13820.2分解需求13920.3第一站——请求模块13920.4下一站——响应数据适配模块14020.5终点站——创建组件模块14120.6站点检测——单元测试14120.7方案确定142下章剧透142忆之获143我问你答143第21章命令模式14421.1自由化创建视图14421.2命令对象14521.3视图创建14521.4视图展示14621.5命令接口14721.6大功告成14721.7绘图命令14821.8写一条命令150下章剧透150忆之获151我问你答151第22章驻华大使——访问者模式15222.1设置样式15222.2自娱自乐的IE15222.3访问操作元素15322.4事件自定义数据15322.5原生对象构造器15422.6对象访问器15422.7操作类数组155下章剧透156忆之获156我问你答156第23章媒婆——中介者模式15723.1导航设置层15723.2创建中介者对象15823.3试试看,可否一用15923.4攻克需求15923.5订阅消息16023.6发布消息161下章剧透162忆之获162我问你答162第24章做好笔录——备忘录模式16324.1新闻展示16324.2缓存数据16424.3新闻缓存器16424.4工作中的备忘录166下章剧透166忆之获166我问你答166第25章点钞机——迭代器模式16725.1简化循环遍历16725.2迭代器16725.3实现迭代器16825.4小试牛刀17025.5数组迭代器17125.6对象迭代器17125.7试用迭代器17225.8同步变量迭代器17225.9分支循环嵌套问题17425.10解决方案176下章剧透177忆之获177我问你答177第26章语言翻译——解释器模式17826.1统计元素路径17826.2描述文法17926.3解释器17926.4同级兄弟元素遍历18026.5遍历文档树18026.6小试牛刀181下章剧透182忆之获182我问你答182第五篇技巧型设计模式第27章永无尽头——链模式18427.1深究jQuery18427.2原型式继承18427.3找位助手18527.4获取元素18527.5一个大问题18627.6覆盖获取18727.7方法丢失18727.8对比jQuery18827.9丰富元素获取18927.10数组与对象19027.11方法拓展19127.12添加方法19227.13大功告成195下章剧透196忆之获196我问你答196第28章未来预言家——委托模式19728.1点击日历交互19728.2委托父元素19728.3预言未来19828.4内存外泄19928.5数据分发200下章剧透201忆之获201我问你答201第29章数据管理器——数据访问对象模式20229.1用户引导20229.2数据访问对象类20329.3数据操作状态20329.4增添数据20429.5查找数据20529.6删除数据20629.7检验DAO20729.8MongoDB20829.9在nodejs中写入配置项20829.10连接MongoDB20829.11操作集合20929.12插入操作20929.13删除操作21029.14更新操作21129.15查找操作21129.16操作其他集合212下章剧透212忆之获212我问你答213第30章执行控制——节流模式21430.1返回顶部21430.2节流器21430.3优化浮层21630.4创建浮层类21630.5添加节流器21730.6图片的延迟加载21830.7延迟加载图片类21830.8获取容器内的图片21930.9加载图片22030.10筛选需加载的图片22030.11获取纵坐标22130.12节流器优化加载22130.13大功告成22230.14统计打包22230.15组装统计222下章剧透224忆之获224我问你答224第31章卡片拼图——简单模板模式22531.1展示模板22531.2实现方案22531.3创建文字列表视图22631.4新方案22731.5再次优化22831.6模板生成器22831.7最佳方案229下章剧透229忆之获230我问你答230第32章机器学习——惰性模式23132.1对事件的思考23132.2机器学习23232.3加载即执行23232.4惰性执行23332.5创建XHR对象23332.6第一种方案23432.7第二种方案235下章剧透235忆之获235我问你答235第33章异国战场——参与者模式23633.1传递数据23633.2函数绑定23733.3应用于事件23833.4原生bind方法23933.5函数柯里化23933.6重构bind24033.7兼容版本241下章剧透242忆之获242我问你答243第34章入场仪式——等待者模式24434.1接口拆分24434.2入场仪式24434.3等待者对象24534.4监控对象24634.5完善接口方法24734.6学以致用24834.7异步方法24834.8结果如何24934.9框架中的等待者25034.10封装异步请求25034.11轮询251下章剧透251忆之获251我问你答252第六篇架构型设计模式第35章死心眼——同步模块模式25435.1排队开发25435.2模块化开发25535.3模块管理器与创建方法25535.4创建模块25635.5模块调用方法25835.6调用模块259下章剧透259忆之获260我问你答260第36章大心脏——异步模块模式26136.1异步加载文件中的模块26136.2异步模块26236.3闭包环境26236.4创建与调度模块26336.5加载模块26436.6设置模块26536.7学以致用26636.8实现交互267下章剧透267忆之获267我问你答267第37章分而治之——Widget模式26837.1视图模块化26837.2模板引擎26937.3实现原理26937.4模板引擎模块26937.5处理数据27037.6获取模板27037.7处理模板27137.8编译执行27237.9几种模板27337.10实现组件274下章剧透274忆之获275我问你答275第38章三人行——MVC模式27638.1小白的顾虑27638.2一个传说——MVC27638.3数据层27738.4视图层27838.5控制器27938.6侧边导航栏27938.7侧边导航栏数据模型层28038.8侧边导航栏视图层28138.9侧边导航栏控制器层28238.10执行控制器28438.11增加一个模块284下章剧透285忆之获285我问你答286第39章三军统帅——MVP模式28739.1数据模型层与视图层联姻的代价28739.2MVP模式28739.3数据层的填补28839.4视图层的大刀阔斧28939.5模板创建的分层处理28939.6处理一个元素29139.7改头换面的管理器29239.8一个案例29339.9用数据装扮导航29339.10千呼万唤始出来的导航29439.11模块开发中的应用29439.12MVP构造函数29539.13增添管理器29539.14增加一个模块295下章剧透297忆之获297我问你答297第40章视图的逆袭——MVVM模式29840.1视图层的思考29840.2滚动条与进度条29940.3组件的探讨29940.4视图模型层29940.5创建进度条30040.6创建滑动条30140.7让滑动条动起来30240.8为组件点睛30340.9寻找我的组件30340.10展现组件304下章剧透304忆之获304我问你答305附录A307
《JavaScript设计模式》共分六篇四十章,首先讨论了几种函数的编写方式,体会JavaScript在编程中的灵活性;然后讲解了面向对象编程的知识,其中讨论了类的创建、数据的封装以及类之间的继承;最后探讨了各种模式的技术,如简单工厂模式,包括工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式,以及外观模式,包括适配器模式。本书还讲解了几种适配器、代理模式、装饰者模式和MVC模式,讨论了如何实现对数据、视图、控制器的分离。在讲解MVP模式时,讨论了如何解决数据与视图之间的耦合,并实现了一个模板生成器;讲解MVVM模式时,讨论了双向绑定对MVC的模式演化。本书几乎包含了关于JavaScript设计模式的全部知识,是进行JavaScript高效编程必备的学习手册。 《JavaScript设计模式》适合JavaScript初学者、前端设计者、JavaScript程序员学习,也可以作为大专院校相关专业师生的学习用书,以及培训学校的教材。
比价列表价格走势