前言
商品简介
本书主要内容 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 介绍如何在新特性获得广泛支持之前使用它们。
作者简介
T. J. Crowder是一位拥有30年经验的软件工程师。在他的整个职业生涯中,他至少有一半时间是在使用JavaScript从事开发工作。他经营着软件承包和产品公司Farsight Software。他经常在Stack Overflow上为人们提供帮助,他是十大贡献者之一和JavaScript标签的很好贡献者。当他不工作或写作时,他总是与他美丽的、支持他的妻子和出色的儿子共度美好时光。
目录
第1章ES2015~ES2020及后续版本的新特性1
1.1名称、定义和术语2
1.1.1Ecma?ECMAScript?TC39?2
1.1.2ES6?ES7?ES2015?ES2020?2
1.1.3JavaScript“引擎”、浏览器及其他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和const13
2.1let和const的介绍13
2.2真正的块级作用域14
2.3重复声明将抛出错误15
2.4提升和暂时性死区15
2.5一种新的全局变量17
2.6const:JavaScript的常量19
2.6.1const基础19
2.6.2常量引用的对象仍然是可变的20
2.7循环中的块级作用域21
2.7.1“循环中的闭包”问题21
2.7.2绑定:变量、常量以及其他标识符的工作方式23
2.7.3while和do-while循环27
2.7.4性能影响28
2.7.5循环块中的const29
2.7.6for-in循环中的const29
2.8旧习换新30
2.8.1用const或let替代var30
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默认值不会增加函数的arity42
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关键字super69
4.6.1编写子类构造函数69
4.6.2继承和访问超类原型的属性和方法70
4.6.3继承静态方法73
4.6.4静态方法中的super75
4.6.5返回新实例的方法75
4.6.6内置对象的子类79
4.6.7super的使用81
4.7移除Object.prototype83
4.8new.target84
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.1Object.setPrototypeOf93
5.3.2浏览器环境中的__proto__属性94
5.3.3浏览器环境中的__proto__字面量属性名94
5.4对象方法的简写语法,以及类之外的super95
5.5Symbol97
5.5.1定义Symbol的原因97
5.5.2创建和使用Symbol99
5.5.3Symbol并不用于私有属性99
5.5.4全局Symbol100
5.5.5内置的Symbol值103
5.6对象的新增方法104
5.6.1Object.assign104
5.6.2Object.is105
5.6.3Object.values105
5.6.4Object.entries106
5.6.5Object.fromEntries106
5.6.6Object.getOwnPropertySymbols106
5.6.7Object.getOwnPropertyDescriptors106
5.7Symbol.toPrimitive107
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
……
内容摘要
涵盖ES2015~ES2020中JavaScript的所有新特性以及下一版的预览。
探索新的语法:空值合并、可选链、let和const、类语法、私有方法、私有字段、new.target、数字分隔符、BigInt、解构、默认参数、箭头函数、异步函数、await、生成器函数、…(rest和spread操作符)、模板字面量、二进制和八进制字面量、**(求幂运算符)、计算属性/方法名、for-of、for-await-of、属性的简写语法等。
详细介绍新特性和模式:模块、Promise、迭代、生成器、Symbol、代理、反射、类型化数组、Atomics、共享内存、WeakMap、WeakSet等。
揭示常见的陷阱并阐述如何避免它们。
展示如何跟进和参与JavaScript的改进流程。
介绍如何在新特性获得广泛支持之前使用它们。
主编推荐
JavaScript是一门快速发展的语言,对于有经验的开发人员来说,如要掌握所有新添加的特性,可能会面临挑战。本书不仅会带你探索世界上最流行语言的新特性,而且会向你展示如何跟踪这门语言的后续发展。本书首先介绍将新特性添加到 JavaScript 的流程,包括这个流程是如何管理的,以及由谁来管理;随后深入详细地描述每个新特性或者有调整的旧特性,并阐述示例用法、可能的陷阱;本书还将提供专业意见,教你使用新特性代替旧用法。
以下为对购买帮助不大的评价