×
超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

关闭
暂无评论
图文详情
  • ISBN:9787302602118
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:其他
  • 页数:490
  • 出版时间:2022-04-01
  • 条形码:9787302602118 ; 978-7-302-60211-8

本书特色

JavaScript是一门快速发展的语言,对于有经验的开发人员来说,如要掌握所有新添加的特性,可能会面临挑战。本书不仅会带你探索世界上语言的新特性,而且会向你展示如何跟踪这门语言的后续发展。本书首先介绍将新特性添加到 JavaScript 的流程,包括这个流程是如何管理的,以及由谁来管理;随后深入详细地描述每个新特性或者有调整的旧特性,并阐述示例用法、可能的陷阱;本书还将提供专业意见,教你使用新特性代替旧用法。

内容简介

本书主要内容 l 涵盖ES2015~ES2020中JavaScript的所有新特性以及下一版的预览。 l 探索**的语法:空值合并、可选链、let和const、类语法、私有方法、私有字段、new.target、数字分隔符、BigInt、解构、默认参数、箭头函数、异步函数、await、生成器函数、…(rest和spread操作符)、模板字面量、二进制和八进制字面量、**(求幂运算符)、计算属性/方法名、for-of、for-await-of、属性的简写语法等。 l 详细介绍新特性和模式:模块、Promise、迭代、生成器、Symbol、代理、反射、类型化数组、Atomics、共享内存、WeakMap、WeakSet等。 l 揭示常见的陷阱并阐述如何避免它们。 l 展示如何跟进和参与JavaScript的改进流程。 l 介绍如何在新特性获得广泛支持之前使用它们。

目录

第1章 ES2015~ES2020及后续版本的

新特性 1

1.1 名称、定义和术语 2

1.1.1 Ecma?ECMAScript?TC39? 2

1.1.2 ES6?ES7?ES2015?ES2020? 2

1.1.3 JavaScript“引擎”、浏览器及其他 3

1.2 什么是“新特性” 3

1.3 新特性的推动流程 5

1.3.1 谁负责 5

1.3.2 流程 5

1.3.3 参与 6

1.3.4 跟上新特性的步伐 7

1.4 旧环境中使用新特性 8

1.5 本章小结 12

第2章 块级作用域声明:let和const 13

2.1 let和const的介绍 13

2.2 真正的块级作用域 14

2.3 重复声明将抛出错误 15

2.4 提升和暂时性死区 15

2.5 一种新的全局变量 17

2.6 const:JavaScript的常量 19

2.6.1 const基础 19

2.6.2 常量引用的对象仍然是可变的 20

2.7 循环中的块级作用域 21

2.7.1 “循环中的闭包”问题 21

2.7.2 绑定:变量、常量以及其他

标识符的工作方式 23

2.7.3 while和do-while循环 27

2.7.4 性能影响 28

2.7.5 循环块中的const 29

2.7.6 for-in循环中的const 29

2.8 旧习换新 30

2.8.1 用const或let替代var 30

2.8.2 缩小变量的作用域 30

2.8.3 用块级作用域替代匿名函数 30

第3章 函数的新特性 33

3.1 箭头函数和this、super等词法 34

3.1.1 箭头函数语法 34

3.1.2 箭头函数和this词法 37

3.1.3 箭头函数不能被用作构造函数 38

3.2 默认参数值 38

3.2.1 默认值是表达式 39

3.2.2 默认值在自己的作用域中被计算 40

3.2.3 默认值不会增加函数的arity 42

3.3 “rest”参数 42

3.4 参数列表和函数调用中的

尾后逗号 44

3.5 函数的name属性 45

3.6 在语句块中声明函数 46

3.6.1 在语句块中声明函数:标准语义 48

3.6.2 在语句块中声明函数:

传统Web语义 49

3.7 旧习换新 51

3.7.1 使用箭头函数替代各种访问this

值的变通方式 51

3.7.2 在不使用this或arguments时,

回调函数使用箭头函数 52

3.7.3 考虑在更多地方使用箭头函数 52

3.7.4 当调用者需要控制this的值时,

不要使用箭头函数 53

3.7.5 使用参数默认值,而不是

代码实现 53

3.7.6 使用“rest”参数替代arguments

关键字 53

3.7.7 如有必要,考虑使用尾后逗号 53

第4章 类 55

4.1 类的概念 55

4.2 介绍新的类语法 56

4.2.1 添加构造函数 57

4.2.2 添加实例属性 59

4.2.3 添加原型方法 59

4.2.4 添加静态方法 61

4.3 添加访问器属性 61

4.4 对比新语法和旧语法 64

4.5 创建子类 66

4.6 关键字super 69

4.6.1 编写子类构造函数 69

4.6.2 继承和访问超类原型的属性和

方法 70

4.6.3 继承静态方法 73

4.6.4 静态方法中的super 75

4.6.5 返回新实例的方法 75

4.6.6 内置对象的子类 79

4.6.7 super的使用 81

4.7 移除Object.prototype 83

4.8 new.target 84

4.9 类声明与类表达式 87

4.9.1 类声明 87

4.9.2 类表达式 88

4.10 更多内容 89

4.11 旧习换新 89

第5章 对象的新特性 91

5.1 可计算属性名 91

5.2 属性的简写语法 92

5.3 获取和设置对象原型 93

5.3.1 Object.setPrototypeOf 93

5.3.2 浏览器环境中的__proto__属性 94

5.3.3 浏览器环境中的__proto__字面量

属性名 94

5.4 对象方法的简写语法,以及类

之外的super 95

5.5 Symbol 97

5.5.1 定义Symbol的原因 97

5.5.2 创建和使用Symbol 99

5.5.3 Symbol并不用于私有属性 99

5.5.4 全局Symbol 100

5.5.5 内置的Symbol值 103

5.6 对象的新增方法 104

5.6.1 Object.assign 104

5.6.2 Object.is 105

5.6.3 Object.values 105

5.6.4 Object.entries 106

5.6.5 Object.fromEntries 106

5.6.6 Object.getOwnPropertySymbols 106

5.6.7 Object.getOwnPropertyDescriptors 106

5.7 Symbol.toPrimitive 107

5.8 属性顺序 109

5.9 属性扩展语法 110

5.10 旧习换新 111

5.10.1 创建对象时对动态变量使用可

计算属性名 111

5.10.2 从同名变量初始化对象时,

使用简写语法 111

5.10.3 使用Object.assign替代自定义的

扩展方法或者显式复制所有

属性 112

5.10.4 基于已有对象创建新对象时,

使用属性扩展语法 112

5.10.5 使用Symbol避免属性名冲突 112

5.10.6 使用Object.getPrototypeOf/

setPrototypeOf替代__proto__ 112

5.10.7 使用对象方法的简写语法来

定义对象中的方法 112

第6章 可迭代对象、迭代器、for-of循环、

可迭代对象的展开语法和

生成器 115



第18章 即将推出的类特性 435

18.1 公有和私有的类字段、方法和

访问器 435

18.1.1 公有字段(属性)定义 436

18.1.2 私有字段 440

18.1.3 私有实例方法和访问器 446

18.1.4 公有静态字段、私有静态字段和

私有静态方法 450

18.2 旧习换新 452

18.2.1 使用属性定义,而不是在构造

函数中创建属性(在适当的

情况下) 452

18.2.2 使用私有类字段,而不是前缀

(在适当的情况下) 453

18.2.3 使用私有方法(而不是类外的

函数)进行私有操作 453

第19章 展望未来 457

19.1 顶层await 458

19.1.1 概述和用例 458

19.1.2 示例 459

19.1.3 错误处理 463

19.2 WeakRef和清理回调 464

19.2.1 WeakRef 464

19.2.2 清理回调 466

19.3 正则表达式匹配索引 471

19.4 String.prototype.replaceAll 472

19.5 Atomics的asyncWait方法 472

19.6 其他语法微调 473

19.6.1 数字分隔符 473

19.6.2 支持hashbang 474

19.7 废弃旧的正则表达式特性 474

19.8 感谢阅读 475

附录 出色的特性及对应的章

(向J.K. Rowling致歉) 477


展开全部

作者简介

T. J. Crowder是一位拥有30年经验的软件工程师。在他的整个职业生涯中,他至少有一半时间是在使用JavaScript从事开发工作。他经营着软件承包和产品公司Farsight Software。他经常在Stack Overflow上为人们提供帮助,他是十大贡献者之一和JavaScript标签的顶级贡献者。当他不工作或写作时,他总是与他美丽的、支持他的妻子和出色的儿子共度美好时光。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航