JavaScript高级编程权威指南
定价:¥149.00
作者: 王红元
出版时间:2025-10
出版社:电子工业出版社
- 电子工业出版社
- 9787121514500
- 1-1
- 568517
- 平塑勒
- 16开
- 2025-10
- 1063
- 648
- 工学
- 计算机类
- 计算机科学与技术
- 本科 高职
内容简介
本书系统介绍JavaScript的主要机制与新特性。第1~4章剖析JavaScript的运行环境,揭示浏览器内核与V8引擎的运行原理。第5~12章介绍作用域与函数,涵盖闭包、this绑定、箭头函数、柯里化实践,以及apply()、call()与bind()三大函数方法。第13~16章通过对比对象创建方案、图解原型链关系的内存模型及寄生组合式继承方案,破解继承体系之间的矛盾。第17~25章解析ES6~ES15的特性变化,结合ECMAScript官方版本的迭代,辩证解读技术的演进过程。第26~29章介绍异步编程知识体系,从Promise手写实现、迭代器协议到async/await语法糖,并辅以事件循环时序图。第30~34章讲解工程实践,包括模块化方案选型,npm、pnpm与yarn生态对比,BOM与DOM操作规范,并手写防抖和节流函数、事件总线等生产级工具。
本书适用于希望突破技术瓶颈的中高级前端开发者、具备基础编程语法知识的学习者,以及需要系统建立JavaScript知识体系的跨语言开发者等,也可作为高等院校计算机或软件工程专业的师生用书和培训学校的教材。
本书适用于希望突破技术瓶颈的中高级前端开发者、具备基础编程语法知识的学习者,以及需要系统建立JavaScript知识体系的跨语言开发者等,也可作为高等院校计算机或软件工程专业的师生用书和培训学校的教材。
目录
1 邂逅JavaScript高级编程 1
1.1 前端开发需要掌握的三大技术 1
1.2 JavaScript的重要性 2
1.2.1 JavaScript的广泛应用 2
1.2.2 JavaScript中让人迷惑的知识点 4
1.3 TypeScript会取代JavaScript吗 4
1.3.1 JavaScript的发展历程 5
1.3.2 JavaScript是一门编程语言 5
1.4 编程语言之间的不同之处 6
1.4.1 机器语言 6
1.4.2 汇编语言 6
1.4.3 高级语言 6
后续预告 7
2 认识浏览器 8
2.1 浏览器的工作原理 8
2.2 认识浏览器内核 12
2.2.1 什么是浏览器内核 12
2.2.2 常见的浏览器内核 12
2.3 渲染引擎的工作流程 13
2.3.1 HTML文件的解析过程 14
2.3.2 生成CSS规则 15
2.3.3 构建渲染树 15
2.3.4 布局与绘制 16
2.3.5 回流与重绘 16
2.3.6 合成 18
后续预告 18
3 V8引擎的运行原理 19
3.1 认识JavaScript引擎 19
3.1.1 什么是JavaScript引擎 19
3.1.2 浏览器内核与JS引擎的关系 20
3.2 V8引擎的原理与处理流程 20
3.3 V8引擎的架构设计 23
3.4 V8的代码转化过程 25
3.4.1 词法分析的过程 26
3.4.2 语法分析的过程 27
3.4.3 转化的字节码 28
3.4.4 生成的机器码 29
后续预告 30
4 V8引擎的内存管理 31
4.1 认识内存管理 31
4.2 执行上下文栈 32
4.3 JavaScript引擎的执行过程 33
4.3.1 初始化全局对象 33
4.3.2 代码的执行过程 33
4.4 作用域链的查找规则 39
4.4.1 对作用域、作用域链的理解 39
4.4.2 AO、GO与VO、VE的区别 40
4.4.3 var缺陷 42
后续预告 43
5 作用域链面试题与垃圾回收 45
5.1 作用域链面试题 45
5.1.1 面试题1 45
5.1.2 面试题2 46
5.1.3 面试题3 48
5.1.4 面试题4 49
5.1.5 面试题5 49
5.1.6 作用域补充 49
5.2 JavaScript中的垃圾回收 50
5.2.1 内存的分配方式 50
5.2.2 常见的垃圾回收算法 51
后续预告 53
6 “一等公民”函数 55
6.1 什么是一等公民 55
6.1.1 函数是一等公民 55
6.1.2 封装函数案例 56
6.2 高阶函数 57
6.2.1 筛选偶数 57
6.2.2 函数与方法的区别 61
6.2.3 如何学习高阶函数 61
6.2.4 语法 62
后续预告 63
7 闭包 64
7.1 什么是闭包 64
7.1.1 闭包的定义 64
7.1.2 高阶函数的执行过程 65
7.1.3 闭包的本质 67
7.1.4 函数执行过程中的内存表现 69
7.1.5 闭包的执行过程 70
7.2 闭包的内存泄漏 73
7.2.1 闭包内存泄漏的解决方案 73
7.2.2 闭包内存泄漏案例 75
7.2.3 激活对象不使用的属性 78
7.3 JS闭包引用的自由变量销毁 79
后续预告 80
8 this指向及绑定规则、优先级 81
8.1 什么是this 81
8.1.1 为什么需要this 81
8.1.2 this在全局作用域中的指向 84
8.1.3 同一个函数的不同this指向 86
8.2 this的绑定规则 87
8.2.1 规则1:默认绑定 87
8.2.2 规则2:隐式绑定 90
8.2.3 规则3:显式绑定 92
8.2.4 规则4:new绑定 96
8.3 一些函数的this绑定 97
8.3.1 内置函数的绑定 97
8.3.2 setTimeout定时器 97
8.3.3 监听点击 98
8.3.4 数组中的绑定 98
8.4 this规则的优先级 100
8.5 特殊绑定 103
8.5.1 忽略显式绑定 103
8.5.2 间接函数引用 103
后续预告 105
9 箭头函数及this面试题 107
9.1 箭头函数 107
9.1.1 什么是箭头函数 107
9.1.2 箭头函数的使用 108
9.2 this面试题 115
9.2.1 面试题1 115
9.2.2 面试题2 116
9.2.3 面试题3 117
9.2.4 面试题4 118
后续预告 119
10 手写apply、call和bind方法以及认识arguments对象 120
10.1 手写apply、call和bind方法 120
10.1.1 call方法的手写实现 121
10.1.2 为函数传递参数 122
10.1.3 ES6中的剩余参数 125
10.1.4 apply方法的手写实现 126
10.1.5 手写call和apply方法的补充 127
10.1.6 bind方法的手写实现 127
10.2 认识arguments 129
10.2.1 arguments转数组 129
10.2.2 数组中slice方法的手写实现 130
10.2.3 箭头函数:无arguments 131
后续预告 132
11 纯函数及柯里化 134
11.1 理解JavaScript纯函数 134
11.1.1 副作用 135
11.1.2 纯函数的案例 135
11.1.3 纯函数的优势 136
11.2 JavaScript柯里化 137
11.2.1 柯里化的结构 137
11.2.2 柯里化的作用 138
11.3 理解组合函数 143
11.4 通用组合函数的实现 144
后续预告 145
12 with、eval和严格模式 146
12.1 JS碎片知识补充 146
12.1.1 with语句 146
12.1.2 eval函数 147
12.2 严格模式 147
12.2.1 严格模式的定义与应用 147
12.2.2 严格模式的限制 149
后续预告 152
13 对象和属性描述符 153
13.1 面向对象是现实的抽象方式 153
13.1.1 面向对象编程 153
13.1.2 JS中的面向对象 154
13.1.3 对象的数据属性描述符 155
13.2 Object.defineProperty方法 155
13.2.1 属性描述符分类 157
13.2.2 学习属性描述符的意义 160
后续预告 161
14 对象方法的补充及创建对象方案 162
14.1 在对象上同时定义多个属性 162
14.2 对象方法补充 165
14.3 创建多个对象方案 166
14.3.1 创建对象方案:工厂模式 167
14.3.2 认识构造函数 169_
1.1 前端开发需要掌握的三大技术 1
1.2 JavaScript的重要性 2
1.2.1 JavaScript的广泛应用 2
1.2.2 JavaScript中让人迷惑的知识点 4
1.3 TypeScript会取代JavaScript吗 4
1.3.1 JavaScript的发展历程 5
1.3.2 JavaScript是一门编程语言 5
1.4 编程语言之间的不同之处 6
1.4.1 机器语言 6
1.4.2 汇编语言 6
1.4.3 高级语言 6
后续预告 7
2 认识浏览器 8
2.1 浏览器的工作原理 8
2.2 认识浏览器内核 12
2.2.1 什么是浏览器内核 12
2.2.2 常见的浏览器内核 12
2.3 渲染引擎的工作流程 13
2.3.1 HTML文件的解析过程 14
2.3.2 生成CSS规则 15
2.3.3 构建渲染树 15
2.3.4 布局与绘制 16
2.3.5 回流与重绘 16
2.3.6 合成 18
后续预告 18
3 V8引擎的运行原理 19
3.1 认识JavaScript引擎 19
3.1.1 什么是JavaScript引擎 19
3.1.2 浏览器内核与JS引擎的关系 20
3.2 V8引擎的原理与处理流程 20
3.3 V8引擎的架构设计 23
3.4 V8的代码转化过程 25
3.4.1 词法分析的过程 26
3.4.2 语法分析的过程 27
3.4.3 转化的字节码 28
3.4.4 生成的机器码 29
后续预告 30
4 V8引擎的内存管理 31
4.1 认识内存管理 31
4.2 执行上下文栈 32
4.3 JavaScript引擎的执行过程 33
4.3.1 初始化全局对象 33
4.3.2 代码的执行过程 33
4.4 作用域链的查找规则 39
4.4.1 对作用域、作用域链的理解 39
4.4.2 AO、GO与VO、VE的区别 40
4.4.3 var缺陷 42
后续预告 43
5 作用域链面试题与垃圾回收 45
5.1 作用域链面试题 45
5.1.1 面试题1 45
5.1.2 面试题2 46
5.1.3 面试题3 48
5.1.4 面试题4 49
5.1.5 面试题5 49
5.1.6 作用域补充 49
5.2 JavaScript中的垃圾回收 50
5.2.1 内存的分配方式 50
5.2.2 常见的垃圾回收算法 51
后续预告 53
6 “一等公民”函数 55
6.1 什么是一等公民 55
6.1.1 函数是一等公民 55
6.1.2 封装函数案例 56
6.2 高阶函数 57
6.2.1 筛选偶数 57
6.2.2 函数与方法的区别 61
6.2.3 如何学习高阶函数 61
6.2.4 语法 62
后续预告 63
7 闭包 64
7.1 什么是闭包 64
7.1.1 闭包的定义 64
7.1.2 高阶函数的执行过程 65
7.1.3 闭包的本质 67
7.1.4 函数执行过程中的内存表现 69
7.1.5 闭包的执行过程 70
7.2 闭包的内存泄漏 73
7.2.1 闭包内存泄漏的解决方案 73
7.2.2 闭包内存泄漏案例 75
7.2.3 激活对象不使用的属性 78
7.3 JS闭包引用的自由变量销毁 79
后续预告 80
8 this指向及绑定规则、优先级 81
8.1 什么是this 81
8.1.1 为什么需要this 81
8.1.2 this在全局作用域中的指向 84
8.1.3 同一个函数的不同this指向 86
8.2 this的绑定规则 87
8.2.1 规则1:默认绑定 87
8.2.2 规则2:隐式绑定 90
8.2.3 规则3:显式绑定 92
8.2.4 规则4:new绑定 96
8.3 一些函数的this绑定 97
8.3.1 内置函数的绑定 97
8.3.2 setTimeout定时器 97
8.3.3 监听点击 98
8.3.4 数组中的绑定 98
8.4 this规则的优先级 100
8.5 特殊绑定 103
8.5.1 忽略显式绑定 103
8.5.2 间接函数引用 103
后续预告 105
9 箭头函数及this面试题 107
9.1 箭头函数 107
9.1.1 什么是箭头函数 107
9.1.2 箭头函数的使用 108
9.2 this面试题 115
9.2.1 面试题1 115
9.2.2 面试题2 116
9.2.3 面试题3 117
9.2.4 面试题4 118
后续预告 119
10 手写apply、call和bind方法以及认识arguments对象 120
10.1 手写apply、call和bind方法 120
10.1.1 call方法的手写实现 121
10.1.2 为函数传递参数 122
10.1.3 ES6中的剩余参数 125
10.1.4 apply方法的手写实现 126
10.1.5 手写call和apply方法的补充 127
10.1.6 bind方法的手写实现 127
10.2 认识arguments 129
10.2.1 arguments转数组 129
10.2.2 数组中slice方法的手写实现 130
10.2.3 箭头函数:无arguments 131
后续预告 132
11 纯函数及柯里化 134
11.1 理解JavaScript纯函数 134
11.1.1 副作用 135
11.1.2 纯函数的案例 135
11.1.3 纯函数的优势 136
11.2 JavaScript柯里化 137
11.2.1 柯里化的结构 137
11.2.2 柯里化的作用 138
11.3 理解组合函数 143
11.4 通用组合函数的实现 144
后续预告 145
12 with、eval和严格模式 146
12.1 JS碎片知识补充 146
12.1.1 with语句 146
12.1.2 eval函数 147
12.2 严格模式 147
12.2.1 严格模式的定义与应用 147
12.2.2 严格模式的限制 149
后续预告 152
13 对象和属性描述符 153
13.1 面向对象是现实的抽象方式 153
13.1.1 面向对象编程 153
13.1.2 JS中的面向对象 154
13.1.3 对象的数据属性描述符 155
13.2 Object.defineProperty方法 155
13.2.1 属性描述符分类 157
13.2.2 学习属性描述符的意义 160
后续预告 161
14 对象方法的补充及创建对象方案 162
14.1 在对象上同时定义多个属性 162
14.2 对象方法补充 165
14.3 创建多个对象方案 166
14.3.1 创建对象方案:工厂模式 167
14.3.2 认识构造函数 169_















