JavaScript设计模式
作者:张容铭
格式: pdf、txt、epub、azw3、mobi、docx
编辑推荐
专业讲解全面Web前端设计模式书
****、百度前端高级工程师鼎力推荐
Web前端界以一种讲故事方式讲解每一种模式,让每位读者都能读懂。
书中案例都是实际工作中的真实案例,让读者身临其境。
全面涵盖专门针对JavaScript的36个设计模式,帮助读者尽快提高开发效率
深入剖析面向对象的设计原则及代码重构,帮助读者快速融入团队项目开发中
本书通过职场主人公“小铭”实战历练,介绍了他从菜鸟到高级程序员的蜕变过程,值得每一个程序员借鉴和学习!
各种设计模式的原则和准确定义、应用方法实践
内容简介
《JavaScript设计模式》共分六篇四十章,首先讨论了几种函数的编写方式,体会JavaScript在编程中的灵活性;然后讲解了面向对象编程的知识,其中讨论了类的创建、数据的封装以及类之间的继承;最后探讨了各种模式的技术,如简单工厂模式,包括工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式,以及外观模式,包括适配器模式。本书还讲解了几种适配器、代理模式、装饰者模式和MVC模式,讨论了如何实现对数据、视图、控制器的分离。在讲解MVP模式时,讨论了如何解决数据与视图之间的耦合,并实现了一个模板生成器;讲解MVVM模式时,讨论了双向绑定对MVC的模式演化。本书几乎包含了关于JavaScript设计模式的全部知识,是进行JavaScript高效编程必备的学习手册。
《JavaScript设计模式》适合JavaScript初学者、前端设计者、JavaScript程序员学习,也可以作为大专院校相关专业师生的学习用书,以及培训学校的教材。
作者简介
张容铭百度资深高级web前端研发工程师,长期工作在web前端一线上,现研发与维护百度图片搜索业务,曾主导百度新首页项目改版等。 喜欢钢琴,素描,而又常带着他的单反各地旅行。
目 录
目录
第一篇 面向对象编程
第1章 灵活的语言——JavaScript 2
1.1 入职第一天 2
1.2 函数的另一种形式 2
1.3 用对象收编变量 3
1.4 对象的另一种形式 4
1.5 真假对象 4
1.6 类也可以 5
1.7 一个检测类 5
1.8 方法还可以这样用 6
1.9 函数的祖先 7
1.10 可以链式添加吗 8
1.11 换一种方式使用方法 9
下章剧透 10
忆之获 10
我问你答 10
第2章 写的都是看到的——面向
对象编程 11
2.1 两种编程风格——面向过程与
面向对象 11
2.2 包装明星——封装 12
2.3 传宗接代——继承 19
2.4 老师不止一位——多继承 27
2.5 多种调用方式——多态 29
下章剧透 30
忆之获 31
我问你答 31
第二篇 创建型设计模式
第3章 神奇的魔术师——简单工厂模式 34
3.1 工作中的第一次需求 34
3.2 如果类太多,那么提供一个 35
3.3 一个对象有时也可代替许多类 37
3.4 你的理解决定你选择的方式 38
下章剧透 39
忆之获 39
我问你答 39
第4章 给我一张名片——工厂方法模式 40
4.1 广告展现 40
4.2 方案的抉择 41
4.3 安全模式类 42
4.4 安全的工厂方法 43
下章剧透 44
忆之获 44
我问你答 44
第5章 出现的都是幻觉——抽象
工厂模式 45
5.1 带头模范——抽象类 45
5.2 幽灵工厂——抽象工厂模式 46
5.3 抽象与实现 47
下章剧透 49
忆之获 49
我问你答 49
第6章 分即是合——建造者模式 50
6.1 发布简历 50
6.2 创建对象的另一种形式 50
6.3 创建一位应聘者 52
下章剧透 53
忆之获 53
我问你答 54
第7章 语言之魂——原型模式 55
7.1 语言中的原型 55
7.2 创建一个焦点图 55
7.3 最优的解决方案 56
7.4 原型的拓展 58
7.5 原型继承 58
下章剧透 59
忆之获 60
我问你答 60
第8章 一个人的寂寞——单例模式 61
8.1 滑动特效 61
8.2 命名空间的管理员 62
8.3 模块分明 63
8.4 创建一个小型代码库 63
8.5 无法修改的静态变量 64
8.6 惰性单例 65
下章剧透 65
忆之获 66
我问你答 66
第三篇 结构型设计模式
第9章 套餐服务——外观模式 68
9.1 添加一个点击事件 68
9.2 兼容方式 69
9.3 除此之外 70
9.4 小型代码库 70
下章剧透 71
忆之获 71
我问你答 72
第10章 水管弯弯——适配器模式 73
10.1 引入jQuery 73
10.2 生活中的适配器 73
10.3 jQuery适配器 74
10.4 适配异类框架 74
10.5 参数适配器 75
10.6 数据适配 76
10.7 服务器端数据适配 77
下章剧透 77
忆之获 77
我问你答 78
第11章 牛郎织女——代理模式 79
11.1 无法获取图片上传模块数据 79
11.2 一切只因跨域 79
11.3 站长统计 80
11.4 JSONP 81
11.5 代理模板 81
下章剧透 83
忆之获 83
我问你答 84
第12章 房子装修——装饰者模式 85
12.1 为输入框的新需求 85
12.2 装饰已有的功能对象 86
12.3 为输入框添砖加瓦 86
下章剧透 87
忆之获 87
我问你答 88
第13章 城市间的公路——桥接模式 89
13.1 添加事件交互 89
13.2 提取共同点 90
13.3 事件与业务逻辑之间的桥梁 90
13.4 多元化对象 91
下章剧透 93
忆之获 93
我问你答 93
第14章 超值午餐——组合模式 94
14.1 新闻模块十万火急 94
14.2 餐厅里的套餐业务 95
14.3 每个成员要有祖先 95
14.4 组合要有容器类 96
14.5 创建一个新闻类 97
14.6 把新闻模块创建出来 99
14.7 表单中的应用 100
下章剧透 101
忆之获 101
我问你答 102
第15章 城市公交车——享元模式 103
15.1 翻页需求 103
15.2 冗余的结构 104
15.3 享元对象 104
15.4 实现需求 105
15.5 享元动作 106
下章剧透 108
忆之获 108
我问你答 108
第四篇 行为型设计模式
第16章 照猫画虎——模板方法模式 110
16.1 提示框归一化 110
16.2 美味的蛋糕 111
16.3 创建基本提示框 111
16.4 模板的原型方法 112
16.5 根据模板创建类 113
16.6 继承类也可作为模板类 113
16.7 创建一个提示框 114
16.8 创建多类导航 114
16.9 创建导航更容易 116
下章剧透 116
忆之获 116
我问你答 117
第17章 通信卫星——观察者模式 118
17.1 团队开发的坎坷 118
17.2 卫星的故事 118
17.3 创建一个观察者 119
17.4 拉出来溜溜 121
17.5 使用前的思考 121
17.6 大显身手 121
17.7 对象间解耦 123
17.8 课堂演练 124
下章剧透 125
忆之获 125
我问你答 125
第18章 超级玛丽——状态模式 126
18.1 最美图片 126
18.2 分支判断的思考 126
18.3 状态对象的实现 127
18.4 状态对象演练 127
18.5 超级玛丽 128
18.6 状态的优化 129
18.7 两种使用方式 130
下章剧透 131
忆之获 131
我问你答 131
第19章 活诸葛——策略模式 132
19.1 商品促销 132
19.2 活诸葛 132
19.3 策略对象 133
19.4 诸葛奇谋 133
19.5 缓冲函数 134
19.6 表单验证 134
19.7 算法拓展 135
19.8 算法调用 135
下章剧透 136
忆之获 136
我问你答 137
第20章 有序车站——职责链模式 138
20.1“半成品”需求 138
20.2 分解需求 139
20.3 第一站——请求模块 139
20.4 下一站——响应数据适配模块 140
20.5 终点站——创建组件模块 141
20.6 站点检测——单元测试 141
20.7 方案确定 142
下章剧透 142
忆之获 143
我问你答 143
第21章 命令模式 144
21.1 自由化创建视图 144
21.2 命令对象 145
21.3 视图创建 145
21.4 视图展示 146
21.5 命令接口 147
21.6 大功告成 147
21.7 绘图命令 148
21.8 写一条命令 150
下章剧透 150
忆之获 151
我问你答 151
第22章 驻华大使——访问者模式 152
22.1 设置样式 152
22.2 自娱自乐的IE 152
22.3 访问操作元素 153
22.4 事件自定义数据 153
22.5 原生对象构造器 154
22.6 对象访问器 154
22.7 操作类数组 155
下章剧透 156
忆之获 156
我问你答 156
第23章 媒婆——中介者模式 157
23.1 导航设置层 157
23.2 创建中介者对象 158
23.3 试试看,可否一用 159
23.4 攻克需求 159
23.5 订阅消息 160
23.6 发布消息 161
下章剧透 162
忆之获 162
我问你答 162
第24章 做好笔录——备忘录模式 163
24.1 新闻展示 163
24.2 缓存数据 164
24.3 新闻缓存器 164
24.4 工作中的备忘录 166
下章剧透 166
忆之获 166
我问你答 166
第25章 点钞机——迭代器模式 167
25.1 简化循环遍历 167
25.2 迭代器 167
25.3 实现迭代器 168
25.4 小试牛刀 170
25.5 数组迭代器 171
25.6 对象迭代器 171
25.7 试用迭代器 172
25.8 同步变量迭代器 172
25.9 分支循环嵌套问题 174
25.10 解决方案 176
下章剧透 177
忆之获 177
我问你答 177
第26章 语言翻译——解释器模式 178
26.1 统计元素路径 178
26.2 描述文法 179
26.3 解释器 179
26.4 同级兄弟元素遍历 180
26.5 遍历文档树 180
26.6 小试牛刀 181
下章剧透 182
忆之获 182
我问你答 182
第五篇 技巧型设计模式
第27章 永无尽头——链模式 184
27.1 深究jQuery 184
27.2 原型式继承 184
27.3 找位助手 185
27.4 获取元素 185
27.5 一个大问题 186
27.6 覆盖获取 187
27.7 方法丢失 187
27.8 对比jQuery 188
27.9 丰富元素获取 189
27.10 数组与对象 190
27.11 方法拓展 191
27.12 添加方法 192
27.13 大功告成 195
下章剧透 196
忆之获 196
我问你答 196
第28章 未来预言家——委托模式 197
28.1 点击日历交互 197
28.2 委托父元素 197
28.3 预言未来 198
28.4 内存外泄 199
28.5 数据分发 200
下章剧透 201
忆之获 201
我问你答 201
第29章 数据管理器——数据访问
对象模式 202
29.1 用户引导 202
29.2 数据访问对象类 203
29.3 数据操作状态 203
29.4 增添数据 204
29.5 查找数据 205
29.6 删除数据 206
29.7 检验DAO 207
29.8 MongoDB 208
29.9 在nodejs中写入配置项 208
29.10 连接MongoDB 208
29.11 操作集合 209
29.12 插入操作 209
29.13 删除操作 210
29.14 更新操作 211
29.15 查找操作 211
29.16 操作其他集合 212
下章剧透 212
忆之获 212
我问你答 213
第30章 执行控制——节流模式 214
30.1 返回顶部 214
30.2 节流器 214
30.3 优化浮层 216
30.4 创建浮层类 216
30.5 添加节流器 217
30.6 图片的延迟加载 218
30.7 延迟加载图片类 218
30.8 获取容器内的图片 219
30.9 加载图片 220
30.10 筛选需加载的图片 220
30.11 获取纵坐标 221
30.12 节流器优化加载 221
30.13 大功告成 222
30.14 统计打包 222
30.15 组装统计 222
下章剧透 224
忆之获 224
我问你答 224
第31章 卡片拼图——简单模板模式 225
31.1 展示模板 225
31.2 实现方案 225
31.3 创建文字列表视图 226
31.4 新方案 227
31.5 再次优化 228
31.6 模板生成器 228
31.7 最佳方案 229
下章剧透 229
忆之获 230
我问你答 230
第32章 机器学习——惰性模式 231
32.1 对事件的思考 231
32.2 机器学习 232
32.3 加载即执行 232
32.4 惰性执行 233
32.5 创建XHR对象 233
32.6 第一种方案 234
32.7 第二种方案 235
下章剧透 235
忆之获 235
我问你答 235
第33章 异国战场——参与者模式 236
33.1 传递数据 236
33.2 函数绑定 237
33.3 应用于事件 238
33.4 原生bind方法 239
33.5 函数柯里化 239
33.6 重构bind 240
33.7 兼容版本 241
下章剧透 242
忆之获 242
我问你答 243
第34章 入场仪式——等待者模式 244
34.1 接口拆分 244
34.2 入场仪式 244
34.3 等待者对象 245
34.4 监控对象 246
34.5 完善接口方法 247
34.6 学以致用 248
34.7 异步方法 248
34.8 结果如何 249
34.9 框架中的等待者 250
34.10 封装异步请求 250
34.11 轮询 251
下章剧透 251
忆之获 251
我问你答 252
第六篇 架构型设计模式
第35章 死心眼——同步模块模式 254
35.1 排队开发 254
35.2 模块化开发 255
35.3 模块管理器与创建方法 255
35.4 创建模块 256
35.5 模块调用方法 258
35.6 调用模块 259
下章剧透 259
忆之获 260
我问你答 260
第36章 大心脏——异步模块模式 261
36.1 异步加载文件中的模块 261
36.2 异步模块 262
36.3 闭包环境 262
36.4 创建与调度模块 263
36.5 加载模块 264
36.6 设置模块 265
36.7 学以致用 266
36.8 实现交互 267
下章剧透 267
忆之获 267
我问你答 267
第37章 分而治之——Widget模式 268
37.1 视图模块化 268
37.2 模板引擎 269
37.3 实现原理 269
37.4 模板引擎模块 269
37.5 处理数据 270
37.6 获取模板 270
37.7 处理模板 271
37.8 编译执行 272
37.9 几种模板 273
37.10 实现组件 274
下章剧透 274
忆之获 275
我问你答 275
第38章 三人行——MVC模式 276
38.1 小白的顾虑 276
38.2 一个传说——MVC 276
38.3 数据层 277
38.4 视图层 278
38.5 控制器 279
38.6 侧边导航栏 279
38.7 侧边导航栏数据模型层 280
38.8 侧边导航栏视图层 281
38.9 侧边导航栏控制器层 282
38.10 执行控制器 284
38.11 增加一个模块 284
下章剧透 285
忆之获 285
我问你答 286
第39章 三军统帅——MVP模式 287
39.1 数据模型层与视图层联姻的代价 287
39.2 MVP模式 287
39.3 数据层的填补 288
39.4 视图层的大刀阔斧 289
39.5 模板创建的分层处理 289
39.6 处理一个元素 291
39.7 改头换面的管理器 292
39.8 一个案例 293
39.9 用数据装扮导航 293
39.10 千呼万唤始出来的导航 294
39.11 模块开发中的应用 294
39.12 MVP构造函数 295
39.13 增添管理器 295
39.14 增加一个模块 295
下章剧透 297
忆之获 297
我问你答 297
第40章 视图的逆袭——MVVM模式 298
40.1 视图层的思考 298
40.2 滚动条与进度条 299
40.3 组件的探讨 299
40.4 视图模型层 299
40.5 创建进度条 300
40.6 创建滑动条 301
40.7 让滑动条动起来 302
40.8 为组件点睛 303
40.9 寻找我的组件 303
40.10 展现组件 304
下章剧透 304
忆之获 304
我问你答 305
附录A 307
媒体评论
认识张容铭是在2012年年底的时候,那时张容铭来公司实习,大家都觉得这小伙子实力不俗。而且很爱钻研。在得知容铭利用业余时间完成了本书的创作,作为他的朋友,真替他感到高兴!短短几年,进步如此迅速,在前端实战开发方面有着这么多的积累,有时也会让我自愧不如。
在Web应用日益丰富的今天,越来越多的JavaScript被运用在我们的网页中。随着用户体验日益受到重视,前端的可维护性、前端性能对用户体验的影响开始备受关注,因此如何编写高效的可维护的代码,成为众多互联网公司争相研究的对象。
本书通过对话的方式详细地介绍了各种设计模式的原则和准确定义、应用方法和*实践,全方位比较各种同类模式之间的异同,详细讲解不同模式的使用方法。
“极具趣味,容易理解,但讲解又极为严谨和透彻”是本书的写作风格和*特点。希望大家在学到知识的同时,能够感受到作者的风趣幽默。
最后,希望本书能够帮助业界同仁打造出更为卓越的Web产品。
*集团(*) 高级Web前端研发工程师 王鹏飞
在百度工作的时间里,和张容铭共事过一段时光,在相处的过程中就发现张容铭对设计模式的研究和应用有很大的热情,投入精力很多,且在应用上有很好的理解和收获。本书可以说是张容铭多年来积累的技术经验的总结,涵盖了绝大多数设计模式;叙述方面采用新人与导师对话的方式,风趣幽默、通俗易懂,非常适合JavaScript初学者和前段开发工程师学习。
百度 高级前端研发工程师 杨坤
商品评价
为了方便大家利用电子书更好的学习,精心整理了网络上的各种电子书,有PDF版本的,也有TXT版本的,现有一万多本PDF的,七万多本TXT的,还有精心整理的天涯神贴,而且还在不断增加中,有需要的可以点击下面的衔接或者扫码下载:
链接: https://pan.baidu.com/s/1z45OMvYM0Jy-BVuJJmRvtw?pwd=w3m9 提取码: w3m9 复制这段内容后打开百度网盘手机App,操作更方便哦
请先
!