展开全部

主编推荐语

JavaScript面向对象&函数式编程、20个设计模式、设计原则与重构技巧。

内容简介

本书共分为三部分。第一部分讲解了JavaScript语言中的面向对象和函数式编程方面的知识,尤其是这些知识在设计模式方面的用途。此外还介绍了JavaScript基于原型继承的面向对象系统的来龙去脉。第二部分是核心部分,通过从普通到更好的代码示例,由浅到深地讲解了近20个设计模式。第三部分主要讲解面向对象的设计原则及其在设计模式中的体现。还介绍了一些常见的面向对象编程技巧,和日常开发中的代码重构。

目录

  • 版权信息
  • 前言
  • 第一部分 基础知识
  • 第1章 面向对象的JavaScript
  • 1.1 动态类型语言和鸭子类型
  • 1.2 多态
  • 1.3 封装
  • 1.4 原型模式和基于原型继承的JavaScript对象系统
  • 第2章 this、call和apply
  • 2.1 this
  • 2.2 call和apply
  • 第3章 闭包和高阶函数
  • 3.1 闭包
  • 3.2 高阶函数
  • 3.3 小结
  • 第二部分 设计模式
  • 第4章 单例模式
  • 4.1 实现单例模式
  • 4.2 透明的单例模式
  • 4.3 用代理实现单例模式
  • 4.4 JavaScript中的单例模式
  • 4.5 惰性单例
  • 4.6 通用的惰性单例
  • 4.7 小结
  • 第5章 策略模式
  • 5.1 使用策略模式计算奖金
  • 5.2 JavaScript版本的策略模式
  • 5.3 多态在策略模式中的体现
  • 5.4 使用策略模式实现缓动动画
  • 5.5 更广义的“算法”
  • 5.6 表单校验
  • 5.7 策略模式的优缺点
  • 5.8 一等函数对象与策略模式
  • 5.9 小结
  • 第6章 代理模式
  • 6.1 第一个例子——小明追MM的故事
  • 6.2 保护代理和虚拟代理
  • 6.3 虚拟代理实现图片预加载
  • 6.4 代理的意义
  • 6.5 代理和本体接口的一致性
  • 6.6 虚拟代理合并HTTP请求
  • 6.7 虚拟代理在惰性加载中的应用
  • 6.8 缓存代理
  • 6.9 用高阶函数动态创建代理
  • 6.10 其他代理模式
  • 6.11 小结
  • 第7章 迭代器模式
  • 7.1 jQuery中的迭代器
  • 7.2 实现自己的迭代器
  • 7.3 内部迭代器和外部迭代器
  • 7.4 迭代类数组对象和字面量对象
  • 7.5 倒序迭代器
  • 7.6 中止迭代器
  • 7.7 迭代器模式的应用举例
  • 7.8 小结
  • 第8章 发布—订阅模式
  • 8.1 现实中的发布-订阅模式
  • 8.2 发布-订阅模式的作用
  • 8.3 DOM事件
  • 8.4 自定义事件
  • 8.5 发布-订阅模式的通用实现
  • 8.6 取消订阅的事件
  • 8.7 真实的例子——网站登录
  • 8.8 全局的发布-订阅对象
  • 8.9 模块间通信
  • 8.10 必须先订阅再发布吗
  • 8.11 全局事件的命名冲突
  • 8.12 JavaScript实现发布-订阅模式的便利性
  • 8.13 小结
  • 第9章 命令模式
  • 9.1 命令模式的用途
  • 9.2 命令模式的例子——菜单程序
  • 9.3 JavaScript中的命令模式
  • 9.4 撤销命令
  • 9.5 撤消和重做
  • 9.6 命令队列
  • 9.7 宏命令
  • 9.8 智能命令与傻瓜命令
  • 9.9 小结
  • 第10章 组合模式
  • 10.1 回顾宏命令
  • 10.2 组合模式的用途
  • 10.3 请求在树中传递的过程
  • 10.4 更强大的宏命令
  • 10.5 抽象类在组合模式中的作用
  • 10.6 透明性带来的安全问题
  • 10.7 组合模式的例子——扫描文件夹
  • 10.8 一些值得注意的地方
  • 10.9 引用父对象
  • 10.10 何时使用组合模式
  • 10.11 小结
  • 第11章 模板方法模式
  • 11.1 模板方法模式的定义和组成
  • 11.2 第一个例子——Coffee or Tea
  • 11.3 抽象类
  • 11.4 模板方法模式的使用场景
  • 11.5 钩子方法
  • 11.6 好莱坞原则
  • 11.7 真的需要“继承”吗
  • 11.8 小结
  • 第12章 享元模式
  • 12.1 初识享元模式
  • 12.2 内部状态与外部状态
  • 12.3 享元模式的通用结构
  • 12.4 文件上传的例子
  • 12.5 享元模式的适用性
  • 12.6 再谈内部状态和外部状态
  • 12.7 对象池
  • 12.8 小结
  • 第13章 职责链模式
  • 13.1 现实中的职责链模式
  • 13.2 实际开发中的职责链模式
  • 13.3 用职责链模式重构代码
  • 13.4 灵活可拆分的职责链节点
  • 13.5 异步的职责链
  • 13.6 职责链模式的优缺点
  • 13.7 用AOP实现职责链
  • 13.8 用职责链模式获取文件上传对象
  • 13.9 小结
  • 第14章 中介者模式
  • 14.1 现实中的中介者
  • 14.2 中介者模式的例子——泡泡堂游戏
  • 14.3 中介者模式的例子——购买商品
  • 14.4 小结
  • 第15章 装饰者模式
  • 15.1 模拟传统面向对象语言的装饰者模式
  • 15.2 装饰者也是包装器
  • 15.3 回到JavaScript的装饰者
  • 15.4 装饰函数
  • 15.5 用AOP装饰函数
  • 15.6 AOP的应用实例
  • 15.7 装饰者模式和代理模式
  • 15.8 小结
  • 第16章 状态模式
  • 16.1 初识状态模式
  • 16.2 状态模式的定义
  • 16.3 状态模式的通用结构
  • 16.4 缺少抽象类的变通方式
  • 16.5 另一个状态模式示例——文件上传
  • 16.6 状态模式的优缺点
  • 16.7 状态模式中的性能优化点
  • 16.8 状态模式和策略模式的关系
  • 16.9 JavaScript版本的状态机
  • 16.10 表驱动的有限状态机
  • 16.11 实际项目中的其他状态机
  • 16.12 小结
  • 第17章 适配器模式
  • 17.1 现实中的适配器
  • 17.2 适配器模式的应用
  • 17.3 小结
  • 第三部分 设计原则和编程技巧
  • 第18章 单一职责原则
  • 18.1 设计模式中的SRP原则
  • 18.2 何时应该分离职责
  • 18.3 违反SRP原则
  • 18.4 SRP原则的优缺点
  • 第19章 最少知识原则
  • 19.1 减少对象之间的联系
  • 19.2 设计模式中的最少知识原则
  • 19.3 封装在最少知识原则中的体现
  • 第20章 开放-封闭原则
  • 20.1 扩展window.onload函数
  • 20.2 开放和封闭
  • 20.3 用对象的多态性消除条件分支
  • 20.4 找出变化的地方
  • 20.5 设计模式中的开放-封闭原则
  • 20.6 开放-封闭原则的相对性
  • 20.7 接受第一次愚弄
  • 第21章 接口和面向接口编程
  • 21.1 回到Java的抽象类
  • 21.2 interface
  • 21.3 JavaScript语言是否需要抽象类和interface
  • 21.4 用鸭子类型进行接口检查
  • 21.5 用TypeScript编写基于interface的命令模式
  • 第22章 代码重构
  • 22.1 提炼函数
  • 22.2 合并重复的条件片段
  • 22.3 把条件分支语句提炼成函数
  • 22.4 合理使用循环
  • 22.5 提前让函数退出代替嵌套条件分支
  • 22.6 传递对象参数代替过长的参数列表
  • 22.7 尽量减少参数数量
  • 22.8 少用三目运算符
  • 22.9 合理使用链式调用
  • 22.10 分解大型类
  • 22.11 用return退出多重循环
  • 参考文献
展开全部

评分及书评

评分不足
1个评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。