作者 |
大卫·弗拉纳根 埃里克·S. 罗伯茨 |
丛书名 |
O’Reilly精品图书系列 |
出版社 |
机械工业出版社 |
ISBN |
9782103161339 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8078753 - JavaScript权威指南(原书第7版)--------------------------- 书介绍JavaScript语言和由浏览器与Node实现的JavaScript API。本书适合有一定编程经验、想学习JavaScript读者,也适合已经在使用JavaScript但希望更深入地理解进而真正掌握这门语言的程序员。本书的目标是全面地讲解JavaScript语言,对JavaScript程序中可能用到的重要的客户端API和服务器端API提供深入的介绍。本书篇幅较长,内容非常详尽,相信认真研究本书的读者都能获益良多。 ---------------------------8077042 - 斯坦福程序设计入门课:JavaScript实现--------------------------- 本书通过使用一门叫JavaScript的语言,教会你如何编写程序,引导你走上奇妙的计算机科学的旅程。JavaScript语言是基于Web的应用程序的核心语言。书中所有示例代码都可以在任何浏览器上运行,包括你手机上的浏览器。虽然本书是使用JavaScript来演示,然而,更重要的是,本书着重讲解的是编程基本原则,其中的道理可以用在任何其他语言中。本书旨在用于大学课程中的第一门编程课。它覆盖了传统计算机科学首门课程(通常称为CS1)的所有内容。 |
目录 |
[套装书具体书目] 8077042 - 斯坦福程序设计入门课:JavaScript实现 - 9787111669425 - 机械工业出版社 - 定价 119 8078753 - JavaScript权威指南(原书第7版) - 9787111677222 - 机械工业出版社 - 定价 139 ---------------------------8078753 - JavaScript权威指南(原书第7版)--------------------------- 前言1 第1章 JavaScript简介5 1.1 探索JavaScript7 1.2 Hello World8 1.3 JavaScript之旅9 1.4 示例:字符频率柱形图14 1.5 小结17 第2章 词法结构18 2.1 JavaScript程序的文本18 2.2 注释19 2.3 字面量19 2.4 标识符和保留字19 2.5 Unicode20 2.6 可选的分号21 2.7 小结23 第3章 类型、值和变量24 3.1 概述与定义24 3.2 数值26 3.3 文本32 3.4 布尔值38 3.5 null与undefined39 3.6 符号40 3.7 全局对象41 3.8 不可修改的原始值与可修改的对象引用42 3.9 类型转换44 3.10 变量声明与赋值51 3.11 小结58 第4章 表达式与操作符59 4.1 主表达式59 4.2 对象和数组初始化程序60 4.3 函数定义表达式61 4.4 属性访问表达式62 4.5 调用表达式64 4.6 对象创建表达式65 4.7 操作符概述66 4.8 算术表达式70 4.9 关系表达式75 4.10 逻辑表达式79 4.11 赋值表达式82 4.12 求值表达式83 4.13 其他操作符86 4.14 小结91 第5章 语句92 5.1 表达式语句93 5.2 复合语句与空语句93 5.3 条件语句94 5.4 循环语句99 5.5 跳转语句106 5.6 其他语句113 5.7 声明117 5.8 小结119 第6章 对象120 6.1 对象简介120 6.2 创建对象121 6.3 查询和设置属性124 6.4 删除属性128 6.5 测试属性129 6.6 枚举属性130 6.7 扩展对象131 6.8 序列化对象133 6.9 对象方法133 6.10 对象字面量扩展语法135 6.11 小结141 第7章 数组143 7.1 创建数组144 7.2 读写数组元素146 7.3 稀疏数组148 7.4 数组长度148 7.5 添加和删除数组元素149 7.6 迭代数组150 7.7 多维数组151 7.8 数组方法152 7.9 类数组对象163 7.10 作为数组的字符串165 7.11 小结166 第8章 函数167 8.1 定义函数167 8.2 调用函数172 8.3 函数实参与形参177 8.4 函数作为值184 8.5 函数作为命名空间187 8.6 闭包188 8.7 函数属性、方法与构造函数192 8.8 函数式编程196 8.9 小结201 第9章 类202 9.1 类和原型203 9.2 类和构造函数204 9.3 使用class关键字的类209 9.4 为已有类添加方法215 9.5 子类216 9.6 小结226 第10章 模块227 10.1 基于类、对象和闭包的模块227 10.2 Node中的模块230 10.3 ES6中的模块232 10.4 小结242 第11章 JavaScript标准库243 11.1 集合与映射244 11.2 定型数组与二进制数据249 11.3 正则表达式与模式匹配255 11.4 日期与时间273 11.5 Error类276 11.6 JSON序列化与解析277 11.7 国际化API280 11.8 控制台API287 11.9 URL API290 11.10 计时器293 11.11 小结294 第12章 迭代器与生成器295 12.1 迭代器原理296 12.2 实现可迭代对象296 12.3 生成器300 12.4 高级生成器特性303 12.5 小结306 第13章 异步JavaScript307 13.1 使用回调的异步编程307 13.2 期约311 13.3 async和await330 13.4 异步迭代332 13.5 小结338 第14章 元编程340 14.1 属性的特性340 14.2 对象的可扩展能力345 14.3 prototype特性346 14.4 公认符号347 14.5 模板标签354 14.6 反射API356 14.7 代理对象359 14.8 小结365 第15章 浏览器中的JavaScript367 15.1 Web编程基础369 15.2 事件382 15.3 操作DOM391 15.4 操作CSS406 15.5 文档几何与滚动412 15.6 Web组件416 15.7 可伸缩矢量图形427 15.8 与图形434 15.9 Audio API453 15.10 位置、导航与历史455 15.11 网络463 15.12 存储479 15.13 工作线程与消息传递490 15.14 示例:曼德布洛特集合496 15.15 小结及未来阅读建议508 第16章 Node服务器端JavaScript515 16.1 Node编程基础516 16.2 Node默认异步520 16.3 缓冲区523 16.4 事件与EventEmitter525 16.5 流526 16.6 进程、CPU和操作系统细节536 16.7 操作文件537 16.8 HTTP客户端与服务器547 16.9 非HTTP网络服务器及客户端551 16.10 操作子进程554 16.11 工作线程558 16.12 小结566 第17章 JavaScript工具和扩展568 17.1 使用ESLint检查代码569 17.2 使用Prettier格式化代码570 17.3 使用Jest做单元测试570 17.4 使用npm管理依赖包573 17.5 代码打包574 17.6 使用Babel转译576 17.7 JSX:JavaScript中的标记表达式577 17.8 使用Flow检查类型581 17.9 小结595 关于作者596 关于封面596 ---------------------------8077042 - 斯坦福程序设计入门课:JavaScript实现--------------------------- 译者序 写给学生的话 写给教师的话 致 谢 第1章 轻松入门 …… 1 1.1 Karel介绍 …… 2 1.1.1 Karel的编程 …… 2 1.1.2 Karel的世界 …… 3 1.1.3 Karel的内置函数 …… 3 1.2 教Karel解决问题 …… 4 1.2.1 开始起步 …… 4 1.2.2 定义函数 …… 5 1.2.3 完善程序 …… 6 1.2.4 使用库函数 …… 7 1.2.5 分解策略 …… 7 1.3 控制语句 …… 9 1.3.1 条件语句 …… 9 1.3.2 循环语句 …… 11 1.3.3 解决通用问题 …… 13 1.4 逐步求精法 …… 15 1.4.1 一个逐步求精法的练习 …… 15 1.4.2 自上而下设计的原则 …… 15 1.4.3 求精第一个子问题 …… 16 1.4.4 编写下一层代码 …… 17 1.4.5 完成 …… 18 1.5 Karel世界里的算法 …… 19 总结 …… 20 复习题 …… 22 练习题 …… 22 第2章 JavaScript简介 …… 34 2.1 数据和类型 …… 35 2.2 数值数据 …… 35 2.2.1 JavaScript中数字的表示 …… 36 2.2.2 算术表达式 …… 36 2.2.3 优先级 …… 38 2.3 变量 …… 38 2.3.1 变量声明 …… 39 2.3.2 赋值 …… 39 2.3.3 自增和自减操作符 …… 40 2.3.4 命名约定 …… 41 2.3.5 常量 …… 41 2.3.6 顺序计算 …… 42 2.4 函数 …… 42 2.4.1 用JavaScript实现函数 …… 43 2.4.2 库函数 …… 45 2.5 字符串数据 …… 46 2.5.1 字符串操作 …… 47 2.5.2 编写简单的字符串函数 …… 48 2.6 在浏览器中运行JavaScript …… 49 2.6.1 “Hello World”程序 …… 49 2.6.2 JavaScript和Web …… 51 2.6.3 JavaScript程序的HTML模板 …… 51 2.7 测试和调试 …… 53 2.7.1 防御式编程 …… 54 2.7.2 成为一名优秀的调试者 …… 54 2.7.3 编程的各个阶段 …… 54 2.7.4 心理障碍的一个例子 …… 57 2.7.5 编写有效的测试程序 …… 58 2.8 软件维护 …… 60 总结 …… 61 复习题 …… 63 练习题 …… 65 第3章 控制语句 …… 68 3.1 布尔数据 …… 69 3.1.1 关系操作符 …… 69 3.1.2 逻辑操作符 …… 70 3.1.3 短路求值 …… 72 3.2 if语句 …… 73 3.2.1 if语句的其他形式 …… 74 3.2.2 “:”操作符 …… 75 3.3 switch语句 …… 76 3.4 while语句 …… 78 3.5 for语句 …… 81 3.5.1 for和while的关系 …… 84 3.5.2 嵌套的for语句 …… 84 3.6 算法编程 …… 86 3.6.1 早期的平方根算法 …… 87 3.6.2 寻找最大的公约数 …… 89 3.6.3 欧几里得算法 …… 90 3.7 避免使用模糊的真假值 …… 92 总结 …… 93 复习题 …… 94 练习题 …… 95 第4章 简单图形 …… 100 4.1 图形版“Hello World” …… 101 4.2 类、对象和方法 …… 102 4.2.1 创建对象 …… 102 4.2.2 向对象发送消息 …… 103 4.2.3 引用 …… 104 4.2.4 封装 …… 105 4.3 图形对象 …… 105 4.3.1 GRect类 …… 105 4.3.2 GOval类 …… 108 4.3.3 GLine类 …… 109 4.3.4 GLabel类 …… 109 4.4 图形窗口 …… 114 4.5 创建图形化应用程序 …… 115 4.5.1 指定坐标和大小 …… 115 4.5.2 使用简单的分解策略 …… 117 4.5.3 在图形应用程序中使用控制语句 …… 119 4.5.4 返回图形对象的函数 …… 121 总结 …… 122 复习题 …… 123 练习题 …… 124 第5章 函数 …… 132 5.1 快速回顾函数 …… 133 5.1.1 函数定义的语法 …… 133 5.1.2 传递参数 …… 134 5.1.3 可选参数 …… 134 5.1.4 谓词函数 …… 135 5.2 程序库 …… 136 5.2.1 创建自己的程序库 …… 136 5.2.2 信息隐藏原则 …… 137 5.2.3 接口概念 …… 138 5.3 一个支持随机选择的程序库 …… 138 5.3.1 设计RandomLib.js库的接口 …… 139 5.3.2 实现RandomLib.js库 …… 140 5.3.3 使用RandomLib.js库 …… 142 5.4 函数调用的机制 …… 144 5.4.1 调用函数的步骤 …… 144 5.4.2 组合函数 …… 145 5.4.3 跟踪组合函数 …… 146 5.5 递归函数 …… 149 5.5.1 fact的递归公式 …… 149 5.5.2跟踪递归过程 …… 150 5.5.3 递归的信仰之跃 …… 153 5.5.4 斐波那契函数 …… 153 5.5.5 计算斐波那契序列中的项 …… 154 5.5.6 在递归实现中获得信心 …… 155 5.5.7 递归实现的效率 …… 155 总结 …… 158 复习题 …… 159 练习题 …… 160 第6章 编写交互式程序 …… 164 6.1 一等函数 …… 165 6.1.1 将函数声明为数据值 …… 165 6.1.2 传递函数作为参数 …… 166 6.2 一个简单的交互式示例 …… 167 6.3 控制对象的属性 …… 169 6.4 响应鼠标事件 …… 170 6.4.1 简单的画线程序 …… 171 6.4.2 在画布上拖动对象 …… 173 6.5 基于计时器的动画 …… 175 6.5.1 setTimeout和setInterval函数 …… 175 6.5.2 动画的简单示例 …… 176 6.5.3 跟踪动画的状态 …… 177 6.6 扩展图形库 …… 179 6.6.1 GArc类 …… 179 6.6.2 GPolygon类 …… 181 6.6.3 GCompound类 …… 184 总结 …… 186 复习题 …… 188 练习题 …… 189 第7章 字符串 …… 197 7.1 二进制表示法 …… 198 7.1.1 二进制记数法 …… 198 7.1.2 将整数存储为位序列 …… 199 7.1.3 十六进制记数法 …… 200 7.1.4 表示非数值数据 …… 201 7.1.5 表示字符 …… 202 7.2 字符串操作 …… 203 7.2.1 确定字符串的长度 …… 205 7.2.2 从字符串中选择字符 …… 205 7.2.3 提取字符串的一部分 …… 206 7.2.4 在字符串中搜索 …… 206 7.2.5 大小写转换 …… 207 7.2.6 startsWith、endsWith和trim方法 …… 207 7.2.7 数字和字符串之间的转换 …… 208 7.3 字符分类 …… 209 7.4 字符串常见的代码模式 …… 210 7.4.1 遍历字符串中的字符 …… 210 7.4.2 拼接字符串 …… 211 7.4.3 遍历和拼接的组合模式 …… 212 7.5 字符串应用程序 …… 212 7.5.1 检查回文 …… 212 7.5.2 生成缩写词 …… 213 7.5.3 将英语翻译成Pig Latin …… 214 7.5.4 实现简单的密码 …… 216 7.6 从控制台读取数据 …… 218 总结 …… 220 复习题 …… 221 练习题 …… 222 第8章 数组 …… 229 8.1 数组介绍 …… 230 8.1.1 JavaScript数组表示法 …… 230 8.1.2 数组的元素选择 …… 231 8.1.3 数组作为引用传递 …… 233 8.1.4 访问数组边界之外的元素 …… 234 8.2 数组操作 …… 235 8.2.1 添加和移除数组元素 …… 236 8.2.2 重新给数组元素排序的方法 …… 239 8.2.3 字符串和数组互相转换 …… 240 8.2.4 ArrayLib.js库 …… 241 8.3 使用数组制表 …… 242 8.4 从文件中读取文本 …… 245 8.5 多维数组 …… 246 8.6 图像处理 …… 247 8.6.1 GImage类 …… 247 8.6.2 确定图像的属性 …… 248 8.6.3 图像的表示 …… 250 8.6.4 使用GImage类操作图像 …… 250 总结 …… 254 复习题 …… 254 练习题 …… 256 第9章 对象 …… 261 9.1 JavaScript里的对象 …… 262 9.1.1 对象用作记录 …… 262 9.1.2 创建对象 …… 263 9.1.3 选择属性 …… 263 9.1.4 JavaScript对象表示法 …… 264 9.2 把对象当作映射来使用 …… 264 9.2.1 机场编码映射为城市名称 …… 265 9.2.2 初始化一个映射 …… 265 9.2.3 遍历映射中的键 …… 266 9.3 点的表示 …… 267 9.3.1 创建点的策略 …… 268 9.3.2 给Point对象添加方法 …… 269 9.3.3 toString方法 …… 270 9.3.4 在程序里面使用点 …… 272 9.4 有理数的表示 …… 274 9.4.1 定义新类的一般策略 …… 275 9.4.2 站在客户端视角 …… 276 9.4.3 指定Rational类的私有状态 …… 276 9.4.4 为Rational类定义工厂方法 …… 276 9.4.5 为Rational类定义方法 …… 277 9.4.6 实现Rational类 …… 278 9.4.7 定义类方法 …… 280 9.5 把对象连接起来 …… 280 总结 …… 283 复习题 …… 284 练习题 …… 285 第10章 设计数据结构 …… 289 10.1 抽象数据类型 …… 289 10.2 实现token扫描器 …… 290 10.2.1 客户端想从token扫描器中得到什么 …… 290 10.2.2 JSTokenScanner类 …… 294 10.3 效率和表示 …… 296 10.3.1 在不使用封装的情况下实现词汇表 …… 296 10.3.2 基于数组的封装实现 …… 297 10.3.3 效率的实证测量 …… 298 10.3.4 使用映射实现词汇表 …… 299算法 …… 301 10.3.6 分治算法 …… 304 10.4 表示真实世界的数据 …… 305 总结 …… 310 复习题 …… 310 练习题 …… 311 第11章 继承 …… 319 11.1 类层次结构 …… 320 11.2 定义雇员的类层次结构 …… 322 11.3 扩展图形类 …… 325 11.3.1 扩展GPolygon类 …… 326 11.3.2 扩展GCompound类 …… 327 11.4 分解和继承 …… 328 11.5 继承的替代方案 …… 332 总结 …… 333 复习题 …… 333 练习题 …… 334 第12章 JavaScript与Web …… 341 12.1 一个简单的交互式示例 …… 342 12.2 HTML概览 …… 343 12.2.1 在Web页面中展示文本 …… 345 12.2.2 显示图片 …… 347 12.2.3 超链接 …… 348 12.3 使用CSS …… 350 12.3.1 CSS声明 …… 350 12.3.2 为元素指定样式 …… 352 12.3.3 设置外边距、边框、内边距和大小 …… 353 12.4 连接JavaScript和HTML …… 355 12.4.1 文档对象模型 …… 355 12.4.2 给HTML元素添加事件监听器 …… 357 12.4.3 可折叠列表 …… 359 12.5 将数据存储在index.html文件中 …… 363 12.5.1 使用XML表示数据 …… 364 12.5.2 打造一个教学机 …… 364 12.5.3 更改应用程序领域 …… 368 总结 …… 369 复习题 …… 370 练习题 …… 371 |