主页
请支持本书:
购买
或
捐赠
(广告,请勿屏蔽。)
深入 JavaScript
目录
I. 前言
1. 关于本书
1.1. 本书的主页在哪里?
1.2. 本书包含哪些内容?
1.3. 我购买后能获得什么?
1.4. 如何预览内容?
1.5. 如何报告错误?
1.6. 阅读提示
1.7. 符号和约定
1.8. 致谢
II. 类型、值、变量
2. JavaScript 中的类型强制转换
2.1. 什么是类型强制转换?
2.2. 在 ECMAScript 规范中帮助实现强制转换的操作
2.3. 中场休息:用 JavaScript 表达规范算法
2.4. 强制转换算法示例
2.5. 执行强制转换的操作
2.6. 词汇表:与类型转换相关的术语
3. 解构算法
3.1. 为模式匹配算法做准备
3.2. 模式匹配算法
3.3. 空对象模式和数组模式
3.4. 应用算法
4. 环境:变量的幕后
4.1. 环境:用于管理变量的数据结构
4.2. 通过环境进行递归
4.3. 通过环境进行嵌套作用域
4.4. 闭包和环境
5. 深入了解全局变量
5.1. 作用域
5.2. 词法环境
5.3. 全局对象
5.4. 在浏览器中,`globalThis` 并不直接指向全局对象
5.5. 全局环境
5.6. 总结:为什么 JavaScript 同时拥有普通全局变量和全局对象?
5.7. 本章的进一步阅读和资料来源
III. 数据处理
6. 复制对象和数组
6.1. 浅拷贝与深拷贝
6.2. JavaScript 中的浅拷贝
6.3. JavaScript 中的深拷贝
6.4. 进一步阅读
7. 破坏性和非破坏性地更新数据
7.1. 示例:破坏性和非破坏性地更新对象
7.2. 示例:破坏性和非破坏性地更新数组
7.3. 手动深度更新
7.4. 实现通用的深度更新
8. 共享可变状态的问题以及如何避免
8.1. 什么是共享可变状态,为什么它会有问题?
8.2. 通过复制数据避免共享
8.3. 通过非破坏性更新避免突变
8.4. 通过使数据不可变来防止突变
8.5. 用于避免共享可变状态的库
IV. 面向对象编程:对象属性特性
9. 属性特性:简介
9.1. 对象的结构
9.2. 属性描述符
9.3. 检索属性的描述符
9.4. 通过描述符定义属性
9.5. `Object.create()`:通过描述符创建对象
9.6. `Object.getOwnPropertyDescriptors()` 的用例
9.7. 省略描述符属性
9.8. 内置构造函数使用哪些属性特性?
9.9. API:属性描述符
9.10. 进一步阅读
10. 保护对象不被更改
10.1. 保护级别:防止扩展、密封、冻结
10.2. 防止对象扩展
10.3. 密封对象
10.4. 冻结对象
10.5. 进一步阅读
11. 属性:赋值与定义
11.1. 赋值与定义
11.2. 理论上的赋值和定义(可选)
11.3. 实践中的定义和赋值
11.4. 哪些语言结构使用定义,哪些使用赋值?
11.5. 本章的进一步阅读和资料来源
12. 属性的可枚举性
12.1. 可枚举性如何影响属性迭代结构
12.2. 预定义和创建属性的可枚举性
12.3. 可枚举性的用例
12.4. 总结
V. 面向对象编程:技术
13. 实例化类的技术
13.1. 问题:异步初始化属性
13.2. 解决方案:基于 Promise 的构造函数
13.3. 解决方案:静态工厂方法
13.4. 继承基于 Promise 的构造函数(可选)
13.5. 总结
13.6. 进一步阅读
14. 复制类的实例:`.clone()` 与拷贝构造函数
14.1. `.clone()` 方法
14.2. 静态工厂方法
14.3. 致谢
15. 集合的不可变包装器
15.1. 包装对象
15.2. Map 的不可变包装器
15.3. 数组的不可变包装器
VI. 正则表达式
16. 正则表达式:环视断言示例
16.1. 速查表:环视断言
16.2. 本章的注意事项
16.3. 示例:指定匹配之前或之后的字符(正向环视)
16.4. 示例:指定匹配之前或之后不能出现的字符(负向环视)
16.5. 插曲:将环视断言指向内部
16.6. 示例:匹配不以 `'abc'` 开头的字符串
16.7. 示例:匹配不包含 `'.mjs'` 的子字符串
16.8. 示例:跳过带有注释的行
16.9. 示例:智能引号
16.10. 致谢
16.11. 进一步阅读
VII. 其他主题
17. 通过实现 Promise 来探索 Promise
17.1. 回顾:Promise 的状态
17.2. 版本 1:独立的 Promise
17.3. 版本 2:链接 `.then()` 调用
17.4. 便捷方法 `.catch()`
17.5. 省略反应
17.6. 实现
17.7. 版本 3:扁平化从 `.then()` 回调返回的 Promise
17.8. 版本 4:反应回调中抛出的异常
17.9. 版本 5:揭示构造函数模式
18. 使用 Proxy 进行元编程
18.1. 概述
18.2. 编程与元编程
18.3. Proxy 解释
18.4. Proxy 的用例
18.5. Proxy API 的设计
18.6. 常见问题解答:Proxy
18.7. 参考:Proxy API
18.8. 总结
18.9. 进一步阅读
19. 剩下的章节在哪里?