JavaScript经典实例(第三版)
Adam D. Scott, Matthew MacDonald, Shelley Powers
安道 译
出版时间:2022年09月
页数:567
“为JavaScript开发人员经常遇到的问题给出了切实可行的解决方案。所有方案都依托精心编写的代码示例进行讲解,而且时刻不忘现代JavaScript 最佳实践。”
——Sarah Wachs
软件开发者,Women Who Code领军人物

为什么每次遇到JavaScript问题都要从头思索一番呢?这本经典实例充满各种常见编程任务的秘籍,还有构建可在任何浏览器中运行的应用所需的技术。本书给出的代码示例几乎可以直接用到任何项目中,而且你将学到更多的JavaScript知识。
书中的经典实例使用ECMAScript 2020及后续版本的最新特性,而且使用现代JavaScript编程标准。阅读本书将学到以下知识。
● 设置一个高效的开发环境,包含代码编辑器、lint程序和测试服务器。
● 提高对JavaScript函数的理解,包括箭头句法、闭包和生成器。
● 运用面向对象编程概念,例如类和继承。
● 在JavaScript中处理富媒体,包括音频、视频和SVG。
● 处理HTML标记和CSS样式。
● 借助Node.js在任何地方使用JavaScript。
● 使用REST、GraphQL和fetch访问及处理远程数据。
● 上手使用流行的应用构建框架Express。
● 使用promise、async/await和Web职程执行异步操作。
  1. 前言
  2. 第一部分 JavaScript语言
  3. 第1章 搭建开发环境
  4. 1.1 选择代码编辑器
  5. 1.2 使用浏览器中的开发者控制台
  6. 1.3 在开发者控制台中运行代码块
  7. 1.4 使用严格模式捕获常见错误
  8. 1.5 使用Emmet快捷键填充HTML样板代码
  9. 1.6 安装npm包管理器(及Node.js)
  10. 1.7 使用npm下载包
  11. 1.8 使用npm更新包
  12. 1.9 设置本地测试服务器
  13. 1.10 使用lint工具实施代码标准
  14. 1.11 使用格式化工具保持代码风格一致
  15. 1.12 在JavaScript Playground中试验
  16. 第2章 字符串和正则表达式
  17. 2.1 检查字符串存在,不为空
  18. 2.2 把数值转换为格式化字符串
  19. 2.3 插入特殊字符
  20. 2.4 插入表情符号
  21. 2.5 使用模板字面量简化字符串拼接
  22. 2.6 不区分大小写比较字符串
  23. 2.7 检查字符串中是否包含指定的子串
  24. 2.8 替换字符串出现的每一处
  25. 2.9 把HTML标签替换为具名实体
  26. 2.10 使用正则表达式替换字符串中的模式
  27. 2.11 从字符串中提取列表
  28. 2.12 查找满足模式的所有内容
  29. 2.13 删除字符串头尾的空白
  30. 2.14 把字符串的第一个字母转换为大写
  31. 2.15 验证电子邮件地址
  32. 第3章 数字
  33. 3.1 生成随机数
  34. 3.2 生成密码学上安全的随机数
  35. 3.3 四舍五入到指定的小数位
  36. 3.4 保留小数的精确度
  37. 3.5 把字符串转换成数字
  38. 3.6 把十进制转换成十六进制
  39. 3.7 角度和弧度互相转换
  40. 3.8 计算圆弧的长度
  41. 3.9 使用BigInt处理特别大的数
  42. 第4章 日期
  43. 4.1 获取当前日期和时间
  44. 4.2 把字符串转换成日期
  45. 4.3 在日期上增加天数
  46. 4.4 比较日期及测试日期是否相同
  47. 4.5 计算两个日期之间的时间间隔
  48. 4.6 把日期值格式化为字符串
  49. 第5章 数组
  50. 5.1 检查一个对象是不是数组
  51. 5.2 迭代数组中的所有元素
  52. 5.3 检查两个数组是否相等
  53. 5.4 把数组拆散成单独的变量
  54. 5.5 把数组传给接受一组值的函数
  55. 5.6 克隆数组
  56. 5.7 合并两个数组
  57. 5.8 按位置复制数组的一部分
  58. 5.9 提取符合指定条件的数组元素
  59. 5.10 清空数组
  60. 5.11 去除重复的值
  61. 5.12 展平二维数组
  62. 5.13 在数组中搜索完全匹配的元素
  63. 5.14 在数组中搜索满足指定条件的元素
  64. 5.15 删除或替换数组元素
  65. 5.16 按属性值排序对象数组
  66. 5.17 变换数组中的每一个元素
  67. 5.18 一次计算合并数组中的全部值
  68. 5.19 验证数组内容
  69. 5.20 创建没有重复值的集合
  70. 5.21 创建使用键索引的元素集合
  71. 第6章 函数
  72. 6.1 把一个函数作为参数传给另一个函数
  73. 6.2 使用箭头函数
  74. 6.3 为参数提供默认值
  75. 6.4 定义接受无限参数的函数
  76. 6.5 使用具名函数参数
  77. 6.6 定义在闭包中存储状态的函数
  78. 6.7 定义可产出多个值的生成器函数
  79. 6.8 使用部分应用技术减少冗余
  80. 6.9 使用函数绑定修正this
  81. 6.10 实现递归算法
  82. 第7章 对象
  83. 7.1 检查对象的类型
  84. 7.2 使用对象字面量打包数据
  85. 7.3 检查对象中有没有某个属性
  86. 7.4 迭代对象的所有属性
  87. 7.5 测试空对象
  88. 7.6 合并两个对象的属性
  89. 7.7 定制定义属性的方式
  90. 7.8 阻止修改对象
  91. 7.9 使用代理截取并改变对象上的操作
  92. 7.10 克隆对象
  93. 7.11 深拷贝对象
  94. 7.12 创建绝对唯一的对象属性键
  95. 7.13 使用Symbol创建枚举
  96. 第8章 类
  97. 8.1 创建一个可重用的类
  98. 8.2 为类添加属性
  99. 8.3 为类提供更好的字符串表示形式
  100. 8.4 使用构造函数模式自定义类
  101. 8.5 让类中的方法支持串联
  102. 8.6 为类添加静态方法
  103. 8.7 使用静态方法创建对象
  104. 8.8 从其他类继承功能
  105. 8.9 使用模块组织JavaScript类
  106. 第9章 异步编程
  107. 9.1 在循环中更新页面
  108. 9.2 使用返回promise的函数
  109. 9.3 改造基于回调的异步函数,使用promise
  110. 9.4 并发执行多个promise
  111. 9.5 使用await和async等待promise结束
  112. 9.6 创建异步生成器函数
  113. 9.7 使用Web职程执行后台任务
  114. 9.8 为Web职程添加进度支持
  115. 第10章 错误和测试
  116. 10.1 捕获并压制错误
  117. 10.2 捕获不同类型的错误
  118. 10.3 捕获异步错误
  119. 10.4 检测未处理的错误
  120. 10.5 抛出标准错误
  121. 10.6 抛出自定义错误
  122. 10.7 为代码编写单元测试
  123. 10.8 跟踪测试代码覆盖率
  124. 第二部分 浏览器中的JavaScript
  125. 第11章 浏览器工具
  126. 11.1 调试JavaScript
  127. 11.2 分析运行时性能
  128. 11.3 找出未使用的JavaScript代码
  129. 11.4 使用Lighthouse衡量最佳实践
  130. 第12章 处理HTML
  131. 12.1 获取指定的元素,查找它的父元素和子元素
  132. 12.2 使用forEach()遍历querySelectorAll()获取的结果
  133. 12.3 为元素添加点击功能
  134. 12.4 查找具有同一属性的全部元素
  135. 12.5 获取所有特定类型的元素
  136. 12.6 使用Selectors API查找所有子元素
  137. 12.7 修改元素的类值
  138. 12.8 设置元素的样式属性
  139. 12.9 为新段落添加文本
  140. 12.10 把新元素插入DOM的特定位置
  141. 12.11 检查有没有勾选复选框
  142. 12.12 对HTML表格中的值求和
  143. 12.13 删除HTML表格中的行
  144. 12.14 隐藏页面中的部分内容
  145. 12.15 创建悬停弹出信息窗口
  146. 12.16 验证表单数据
  147. 12.17 突出显示表单错误并符合无障碍功能要求
  148. 12.18 保障自动更新区域的无障碍功能
  149. 第13章 获取远程数据
  150. 13.1 使用Fetch API请求远程数据
  151. 13.2 使用XMLHttpRequest
  152. 13.3 提交表单
  153. 13.4 从服务器获取数据填充选择列表
  154. 13.5 解析返回的JSON
  155. 13.6 获取及解析XML
  156. 13.7 发送二进制数据,载入图像
  157. 13.8 跨域共享HTTP cookie
  158. 13.9 使用Websockets在客户端和服务器之间建立双向通信
  159. 13.10 长时间轮询远程数据源
  160. 第14章 数据持久化
  161. 14.1 使用cookie持久存储信息
  162. 14.2 使用sessionStorage在客户端存储数据
  163. 14.3 使用localStorage在客户端存储数据
  164. 14.4 使用IndexedDB在客户端持久存储大段数据
  165. 14.5 借助代码库简化IndexedDB操作
  166. 第15章 处理媒体文件
  167. 15.1 为SVG添加JavaScript代码
  168. 15.2 在网页脚本中访问SVG
  169. 15.3 使用D3库创建一个SVG条形图
  170. 15.4 在HTML中集成SVG和画布元素
  171. 15.5 音频文件开始播放时运行一个例程
  172. 15.6 使用JavaScript控制video元素
  173. 第16章 编写Web应用
  174. 16.1 打包JavaScript
  175. 16.2 JavaScript和移动Web
  176. 16.3 编写渐进式Web应用
  177. 16.4 测试和剖析渐进式Web应用
  178. 16.5 获取当前URL的值
  179. 16.6 重定向URL
  180. 16.7 把文本复制到用户的剪贴板
  181. 16.8 在桌面浏览器中实现类似移动设备的通知
  182. 16.9 在浏览器中加载本地文件
  183. 16.10 使用Web组件扩展可能性
  184. 16.11 选择前端框架
  185. 第三部分 Node.js
  186. 第17章 Node基础
  187. 17.1 使用Node Version Manager管理Node版本
  188. 17.2 响应简单的浏览器请求
  189. 17.3 使用REPL以交互的方式尝试Node代码片段
  190. 17.4 读写文件数据
  191. 17.5 通过终端获取输入
  192. 17.6 获取当前脚本的路径
  193. 17.7 使用Node计时器,理解Node事件循环
  194. 第18章 Node模块
  195. 18.1 通过npm搜索特定的Node模块
  196. 18.2 把库转换成Node模块
  197. 18.3 让代码支持多个模块环境
  198. 18.4 创建可以安装的Node模块
  199. 18.5 编写跨平台库
  200. 18.6 对模块做单元测试
  201. 第19章 管理Node
  202. 19.1 使用环境变量
  203. 19.2 管理回调地狱
  204. 19.3 在Node应用中调取命令行功能
  205. 19.4 传递命令行参数
  206. 19.5 借助Commander创建命令行实用程序
  207. 19.6 让Node实例保持运行
  208. 19.7 在本地开发过程中监控应用变化,适时重启
  209. 19.8 定期运行重复性任务
  210. 19.9 测试WebSockets应用的性能和功能
  211. 第20章 远程数据
  212. 20.1 获取远程数据
  213. 20.2 屏幕爬取
  214. 20.3 通过REST式API获取JSON格式数据
  215. 第21章 使用Express构建Web应用
  216. 21.1 使用Express响应请求
  217. 21.2 使用 Express-Generator
  218. 21.3 路由
  219. 21.4 使用OAuth
  220. 21.5 使用Passport.js进行OAuth 2用户验证
  221. 21.6 伺服格式化数据
  222. 21.7 构建一个REST式API
  223. 21.8 构建一个GraphQL
书名:JavaScript经典实例(第三版)
译者:安道 译
国内出版社:中国电力出版社
出版时间:2022年09月
页数:567
书号:978-7-5198-6960-1
原版书书名:JavaScript Cookbook, 3E
原版书出版商:O'Reilly Media
Adam D. Scott
 
Adam D. Scott生活在美国康涅狄格州,是一名工程经理、Web开发者和教育工作者。他目前在美国消费者金融保护局担任Web开发主管,与才华横溢的团队一起专注于构建开源Web应用。他从事教育工作已经十多年,经历了很多技术变革。他教授和编写了一系列技术课程。
 
 
Matthew MacDonald
 
Matthew MacDonald是一位作家、教育家和MCSD开发人员。他已经编写了几本使用.NET进行编程的书籍,包括The Book of VB .NET(No Starch)和ASP.NET:The Complete Reference(Osborne McGraw-Hill)。他还是几本O'Reilly出版的图书的合作者,包括C# in a Nutshell、ASP.NET in a Nutshell以及ADO.NET in a Nutshell。在记忆已经变得有点模糊的过去的时代,他学习英语文学和理论物理。
 
 
Shelley Powers
 
Shelley Powers从JavaScript初次开发到现在最新的图形和设计工具发布,Shelley Powers已经从事Web技术工作和写作达15年之久。她最近在O’Reilly出版的图书包括语义网、Ajax、JavaScript和Web图形。她是一位热情的业余摄影师,也是Web开发的狂热爱好者,她从JavaScript刚发布时,就开始使用和编写Web技术相关书籍。她之前在O’Reilly出版了8本书,包括Developing ASP Components(2001),Adding Ajax(2007)和JavaScript Cookbook(2010)。
 
 
本书封面上的动物是一只小白鹭(学名:Egretta garzetta)。小白鹭是新加坡最小、最常见的白鹭,与新大陆的雪鹭很像。这种白鹭最初的繁殖地包括欧洲、亚洲、非洲、中国台湾和澳大利亚等暖温带地区的大片内陆和沿海湿地。生活在温暖地带的小白鹭是留鸟,而北部地区的小白鹭则会迁徙到非洲和南亚。
成年小白鹭体长55~65厘米,翼展88~106厘米,体重350~550克。身披白色羽毛,腿黑趾黄,喙细黑。在繁殖季节,成年小白鹭枕部着生两根矛状毛,背和前颈着生蓑羽,喙眼之间的皮肤呈红色或蓝色。
小白鹭是灵活的猎手,捕猎技术多种多样:时而在浅水滩耐心追踪猎物;时而单腿站立,用另一条腿搅动泥巴,吓唬猎物;时而单腿站立,另一条腿在水面上挥舞引诱。以鱼、昆虫、两栖动物、甲壳类和爬行动物为食。常与其他涉水鸟结群,在树木或灌木、芦苇丛或竹林中营巢。
购买选项
定价:148.00元
书号:978-7-5198-6960-1
出版社:中国电力出版社