收藏商品(已有 0 人收藏)
JavaScript设计模式与开发实践
淘宝价¥49.90
0
累计评论
0
交易成功
运费
库存:9999
数量
钻石卖家

万变学堂

信誉:
掌柜:S22305102
开店时间:2022-06-03
店铺所在地:贵州省.黔西南布依族苗族自治州.兴义市兴义市梦境区
资质:
描述
0
服务
0
物流
0
进入店铺 收藏店铺
商品分类
商品排行
牛仔裙女2019春夏新款中裙高腰半身裙显瘦A字大摆裙文艺气质伞裙 33.26 已售:0件
高腰毛呢短裤女2019秋冬新款韩版拉链阔腿裤学生显瘦a字靴裤外穿 26.40 已售:0件
2019外穿学生宽松阔腿裤韩版a字靴裤毛呢短裤女秋冬款 46.80 已售:0件
2019冬新款高腰呢子短裤女简约阔腿a字毛呢短裤宽松休闲外穿靴裤 51.60 已售:0件
2019秋冬新款韩版毛呢格子高腰配皮带短裤优雅时尚 58.80 已售:0件
2019新款毛呢外套女装中长款小个子双面呢羊毛绒大衣腰带显瘦 306.00 已售:0件
7099冬季新款女装设计师品牌复古兰格子长款毛呢外套大码羊毛大衣 339.60 已售:0件
【盛宏】M家经典大衣双面羊绒大衣毛呢外套女水波纹羊绒大衣7202 900.00 已售:0件
羊毛大衣女2019蒋欣同款双面呢羊绒外套韩版手工长款毛呢 477.60 已售:0件
ZOJ手缝羊毛双面绒外套格子大衣女西装新款秋冬毛呢女装 438.00 已售:0件
  • 商品详情
  • 累计评论0
腾讯前端Alloy Team团队出品,资深前端架构师曾探力作 
涵盖专门针对JavaScript的16个设计模式 
深入剖析面向对象设计原则、编程技巧及代码重构

设计模式是软件设计中经过了大量实际项目验证的可复用的优 秀解决方案,它有助于程序员写出可复用和可维护性高的程序。许多优 秀的JavaScript开源框架都运用了不少设计模式,越来越多的程序员从设计模式中获益,也许是改善了自己编写的某个软件,也许是更好地理解了面向对象的编程思想。无论如何,系统地学习设计模式都会令你受益匪浅。

本书在尊重《设计模式》原意的同时,针对JavaScript语言特性介绍了更适合JavaScript程序员的了16个常用的设计模式,讲解了JavaScript面向对象和函数式编程方面的基础知识,介绍了面向对象的设计原则及其在设计模式中的体现,还分享了面向对象编程技巧和日常开发中的代码重构。本书将教会你如何把经典的设计模式应用到JavaScript语言中,编写出优美、结构化和可维护的代码。


第 一部分 基础知识
第 1章 面向对象的JavaScript2
1.1 动态类型语言和鸭子类型2
1.2 多态4
1.2.1 一段“多态”的JavaScript
代码5
1.2.2 对象的多态性5
1.2.3 类型检查和多态6
1.2.4 使用继承得到多态效果7
1.2.5 JavaScript的多态8
1.2.6 多态在面向对象程序设计中
的作用9
1.2.7 设计模式与多态11
1.3 封装12
1.3.1 封装数据12
1.3.2 封装实现12
1.3.3 封装类型13
1.3.4 封装变化13
1.4 原型模式和基于原型继承的JavaScript
对象系统14
1.4.1 使用克隆的原型模式14
1.4.2 克隆是创建对象的手段15
1.4.3 体验Io语言15
1.4.4 原型编程范型的一些规则17
1.4.5 JavaScript中的原型继承18
1.4.6 原型继承的未来22
1.4.6 小结23
第 2章 this、call和apply24
2.1 this24
2.1.1 this的指向24
2.1.2 丢失的this27
2.2 call和apply29
2.2.1 call和apply的区别29
2.2.2 call和apply的用途30
第3章 闭包和高阶函数35
3.1 闭包35
3.1.1 变量的作用域35
3.1.2 变量的生存周期36
3.1.3 闭包的更多作用38
3.1.4 闭包和面向对象设计40
3.1.5 用闭包实现命令模式41
3.1.6 闭包与内存管理43
3.2 高阶函数44
3.2.1 函数作为参数传递44
3.2.2 函数作为返回值输出46
3.2.3 高阶函数实现AOP47
3.2.4 高阶函数的其他应用49
3.3 小结58
第 二部分 设计模式
第4章 单例模式60
4.1 实现单例模式60
4.2 透明的单例模式61
4.3 用代理实现单例模式62
4.4 JavaScript中的单例模式63
4.5 惰性单例65
4.6 通用的惰性单例68
4.7 小结70
第5章 程序员与算法71
5.1 使用策略模式计算奖金72
5.2 JavaScript版本的策略模式75
5.3 多态在策略模式中的体现76
5.4 使用策略模式实现缓动动画76
5.4.1 实现动画效果的原理76
5.4.2 思路和一些准备工作77
5.4.3 让小球运动起来77
5.5 更广义的“算法”80
5.6 表单校验80
5.6.1 表单校验的第 一个版本80
5.6.2 用策略模式重构表单校验81
5.6.3 给某个文本输入框添加多种
校验规则83
5.7 策略模式的优缺点86
5.8 一等函数对象与策略模式86
5.9 小结87
第6章 代理模式88
6.1 第 一个例子——小明追MM的故事88
6.2 保护代理和虚拟代理91
6.3 虚拟代理实现图片预加载91
6.4 代理的意义93
6.5 代理和本体接口的一致性94
6.6 虚拟代理合并HTTP请求95
6.7 虚拟代理在惰性加载中的应用97
6.8 缓存代理99
6.8.1 缓存代理的例子——计算
乘积99
6.8.2 缓存代理用于ajax异步请
求数据100
6.9 用高阶函数动态创建代理100
6.10 其他代理模式101
6.11 小结102
第7章 迭代器模式103
7.1 jQuery中的迭代器103
7.2 实现自己的迭代器104
7.3 内部迭代器和外部迭代器104
7.4 迭代类数组对象和字面量对象106
7.5 倒序迭代器106
7.6 中止迭代器107
7.7 迭代器模式的应用举例107
7.8 小结109
第8章 发布—订阅模式110
8.1 现实中的发布—订阅模式110
8.2 发布—订阅模式的作用110
8.3 DOM事件111
8.4 自定义事件112
8.5 发布—订阅模式的通用实现113
8.6 取消订阅的事件115
8.7 真实的例子——网站登录115
8.8 全局的发布—订阅对象117
8.9 模块间通信119
8.10 必须先订阅再发布吗120
8.11 全局事件的命名冲突121
8.12 JavaScript实现发布—订阅模式的
便利性124
8.13 小结124
第9章 命令模式125
9.1 命令模式的用途125
9.2 命令模式的例子——菜单程序126
9.3 JavaScript中的命令模式128
9.4 撤销命令130
9.5 恢复命令日志132
9.6 命令队列133
9.7 宏命令134
9.8 智能命令与傻瓜命令135
9.9 小结136
第 10章 组合模式137
10.1 回顾宏命令138
10.2 组合模式的用途139
10.3 请求在树中传递的过程139
10.4 更强大的宏命令140
10.5 抽象类在组合模式中的作用143
10.6 透明性带来的安全问题144
10.7 组合模式的例子——扫描文件夹145
10.8 一些值得注意的地方147
10.9 引用父对象148
10.10 何时使用组合模式150
10.11 小结150
第 11章 模板方法模式151
11.1 模板方法模式的定义和组成151
11.2 第 一个例子Coffee or Tea151
11.2.1 先泡一杯咖啡152
11.2.2 沏一壶茶152
11.2.3 分离出共同点153
11.2.4 创建Coffee子类和Tea
子类154
11.3 抽象类156
11.3.1 抽象类的作用156
11.3.2 抽象方法和具体方法156
11.3.3 用Java实现Coffee or Tea的例子157
11.3.4 JavaScript没有抽象类的
缺点和变通158
11.4 模板方法模式的使用场景159
11.5 钩子方法160
11.6 好莱坞原则162
11.7 真的需要“继承”吗162
11.8 小结164
第 12章 享元模式165
12.1 初识享元模式165
12.2 内部状态与外部状态166
12.3 享元模式的通用结构167
12.4 文件上传的例子167
12.4.1 对象爆炸168
12.4.2 享元模式重构文件上传170
12.4.3 剥离外部状态170
12.4.4 工厂进行对象实例化171
12.4.5 管理器封装外部状态171
12.5 享元模式的适用性173
12.6 再谈内部状态和外部状态173
12.6.1 没有内部状态的享元173
12.6.2 没有外部状态的“享元”174
12.7 对象池175
12.7.1 对象池实现175
12.7.2 通用对象池实现177
12.8 小结178
第 13章 职责链模式179
13.1 现实中的职责链模式179
13.2 实际开发中的职责链模式180
13.3 用职责链模式重构代码181
13.4 灵活可拆分的职责链节点183
13.5 异步的职责链184
13.6 职责链模式的优缺点185
13.7 用AOP实现职责链186
13.8 用职责链模式获取文件上传对象187
13.9 小结188
第 14章 中介者模式189
14.1 现实中的中介者190
14.2 中介者模式的例子——泡泡堂游戏191
14.2.1 为游戏增加队伍192
14.2.2 玩家增多带来的困扰194
14.2.3 用中介者模式改造泡泡堂
游戏194
14.3 中介者模式的例子——购买商品199
14.3.1 开始编写代码201
14.3.2 对象之间的联系202
14.3.3 可能遇到的困难203
14.3.4 引入中介者205
14.4 小结207
第 15章 装饰者模式209
15.1 给对象动态添加职责210
15.2 模拟传统面向对象语言的装饰者
模式210
15.3 装饰者也是包装器211
15.4 回到JavaScript的装饰者212
15.5 装饰函数213
15.6 用AOP装饰函数215
15.7 AOP的应用实例217
15.7.1 数据统计上报217
15.7.2 统计函数执行时间218
15.7.3 用AOP动态改变函数的
参数219
15.7.4 插件式的表单验证221
15.8 装饰者模式和代理模式224
15.9 小结224
第 16章 状态模式225
16.1 初识状态模式225
16.1.1 第 一个例子:电灯程序226
16.1.2 状态模式改进电灯程序227
16.2 状态模式的定义231
16.3 状态模式的通用结构231
16.4 缺少抽象类的变通方式232
16.5 另一个状态模式示例——文件上传233