1 INTRODUCTION 2 TypeScript [4] 2.1 工程实践 [1] 2.1.1 类型使用注意 2.2 类型使用 [8] 2.2.1 Decorator 2.2.2 Mixins 2.2.3 Type Challenge 2.2.4 函数 2.2.5 基础类型 2.2.6 类与接口 2.2.7 类型修饰 2.2.8 进阶类型 2.3 类型机制 [3] 2.3.1 类型声明 2.3.2 类型推断 2.3.3 类型断言 2.4 编译原理 [2] 2.4.1 程序与抽象语法树 2.4.2 编译流程 3 V8 引擎 [5] 3.1 JIT 3.2 QuickJS 3.3 V8 纵览 3.4 内存管理 [3] 3.4.1 内存泄露 3.4.2 垃圾回收 3.4.3 对象与数组 3.5 运行时 [1] 3.5.1 调用与堆栈 4 工程实践 [5] 4.1 函数式编程 [4] 4.1.1 不可变对象 4.1.2 函数组合 4.1.3 循环改造 4.1.4 纯函数与副作用 4.2 插件系统 [3] 4.2.1 多个插件协作 4.2.2 插件调用 4.2.3 插件配置与初始化 4.3 编码规约 [3] 4.3.1 Clean JavaScript 4.3.2 性能规约 4.3.3 样式指南 4.4 语法编译 [3] 4.4.1 AST 4.4.2 Babel [3] 4.4.2.1 插件开发 4.4.2.2 编译配置 4.4.2.3 语法转换 4.4.3 集合类型 [5] 4.4.3.1 Map 4.4.3.2 Object 4.4.3.3 对象比较 4.4.3.4 序列化 4.4.3.5 数组与集合 4.5 面向对象编程 [1] 4.5.1 对象校验 5 异步并发 [3] 5.1 Event Loop [1] 5.1.1 Node 事件循环 5.2 RxJS [5] 5.2.1 Observable 5.2.2 Observer 5.2.3 Scheduler 5.2.4 Subject 5.2.5 操作符 [9] 5.2.5.1 创建操作符 5.2.5.2 多播操作符 5.2.5.3 工具操作符 5.2.5.4 数学和聚合操作符 5.2.5.5 条件和布尔操作符 5.2.5.6 组合操作符 5.2.5.7 转换操作符 5.2.5.8 过滤操作符 5.2.5.9 错误处理操作符 5.3 异步模式 [4] 5.3.1 Promise 5.3.2 async await 5.3.3 异步编程模式 5.3.4 异步编程综述 6 设计模式 [2] 6.1 Clean Code [1] 6.1.1 ryanmcdermott JavaScript Clean Code Practices 6.2 SOLID 7 语法基础 [8] 7.1 元编程 [3] 7.1.1 Proxy [1] 7.1.1.1 案例 状态管理工具 7.1.2 Reflect 7.1.3 数据绑定 7.2 函数 [5] 7.2.1 函数声明 7.2.2 函数调用与 this 绑定 7.2.3 迭代器与生成器 7.2.4 闭包 7.2.5 限流 7.3 变量操作 [5] 7.3.1 变量作用域 7.3.2 变量声明 7.3.3 变量拷贝 7.3.4 变量赋值 7.3.5 执行上下文与提升 7.4 数据结构 [6] 7.4.1 基本类型 7.4.2 正则表达式 7.4.3 类型判断与转换 7.4.4 视图类型 7.4.5 字符串与编码 [1] 7.4.5.1 编解码 7.4.6 时间与日期 [3] 7.4.6.1 Date 7.4.6.2 Dayjs 7.4.6.3 Moment.js 7.5 模块化 [2] 7.5.1 ES Modules 7.5.2 模块演化 7.6 流程控制 [3] 7.6.1 异常处理 7.6.2 条件判断 7.6.3 流程控制 7.7 类与对象 [3] 7.7.1 ES6 Class 7.7.2 原型链与类的继承 7.7.3 类的封装与实例化 7.8 ECMAScript [4] 7.8.1 ES10 特性 7.8.2 ES6 特性 7.8.3 ES8 特性 7.8.4 ES9 特性