作者: [美] 尼古拉斯·泽卡斯(Nicholas C.Zakas)
出版社: 电子工业出版社
出版年: 2017-07
ISBN: 9787121317989
~~滚到底部有网盘下载链接~~
内容简介
ES6是ECMAScript标准十余年来变动最大的一个版本,其中添加了许多新的语法特性,既有大家耳熟能详的Promise,也有闻所未闻的Proxy代理和Reflection反射;既有可以通过转译器(Transpiler)等方式在旧版本浏览器中实现兼容的let、const、不定参数、展开运算符等功能,亦有无论如何都无法实现向前兼容的尾调用优化。深入理解ES6的特性对于所有JavaScript开发者而言至关重要,在可预见的未来,ES6中引入的语言特性会成为JavaScript应用程序的主流特性,这也是本书的初衷。希望你通过阅读本书可以了解ES6的新特性,并在需要时能够随时使用。
尼古拉斯·泽卡斯(Nicholas C.Zakas)自2000年以来一直致力于Web应用程序的开发,重点关注前端开发,并以写作和讲述前沿最佳实践而闻名。
尼古拉斯·泽卡斯(Nicholas C.Zakas)自2000年以来一直致力于Web应用程序的开发,重点关注前端开发,并以写作和讲述前沿最佳实践而闻名。
目录
内容简介
译者序
关于作者
关于技术评审
序
鸣谢
前言
1 块级作用域绑定
var声明及变量提升(Hoisting)机制
块级声明
循环中的块作用域绑定
全局块作用域绑定
块级绑定最佳实践的进化
小结
2 字符串和正则表达式
更好的Unicode支持
其他字符串变更
其他正则表达式语法变更
模板字面量
小结
3 函 数
函数形参的默认值
处理无命名参数
增强的Function构造函数
展开运算符
name属性
明确函数的多重用途
块级函数
箭头函数
尾调用优化
小结
4 扩展对象的功能性
对象类别
对象字面量语法扩展
新增方法
重复的对象字面量属性
自有属性枚举顺序
增强对象原型
正式的方法定义
小结
5 解构:使数据访问更便捷
为何使用解构功能
对象解构
数组解构
混合解构
解构参数
小结
6 Symbol和Symbol属性
创建Symbol
Symbol的使用方法
Symbol共享体系
Symbol与类型强制转换
Symbol属性检索
通过well-known Symbol暴露内部操作
小结
7 Set集合与Map集合
ECMAScript 5中的Set集合与Map集合
该解决方案的一些问题
ECMAScript 6中的Set集合
ECMAScript 6中的Map集合
小结
8 迭代器(Iterator)和生成器(Generator)
循环语句的问题
什么是迭代器
什么是生成器
可迭代对象和for-of循环
内建迭代器
展开运算符与非数组可迭代对象
高级迭代器功能
异步任务执行
小结
9 JavaScript中的类
ECMAScript 5中的近类结构
类的声明
类表达式
作为一等公民的类
访问器属性
可计算成员名称
生成器方法
静态成员
继承与派生类
在类的构造函数中使用new.target
小结
10 改进的数组功能
创建数组
为所有数组添加的新方法
定型数组
定型数组与普通数组的相似之处
定型数组与普通数组的差别
小结
11 Promise与异步编程
异步编程的背景知识
Promise的基础知识
全局的Promise拒绝处理
串联Promise
响应多个Promise
自Promise继承
基于Promise的异步任务执行
小结
12 代理(Proxy)和反射(Reflection)API
数组问题
代理和反射
创建一个简单的代理
使用set陷阱验证属性
用get陷阱验证对象结构(Object Shape)
使用has陷阱隐藏已有属性
用deleteProperty陷阱防止删除属性
原型代理陷阱
对象可扩展性陷阱
属性描述符陷阱
ownKeys陷阱
函数代理中的apply和construct陷阱
可撤销代理
解决数组问题
将代理用作原型
小结
13 用模块封装代码
什么是模块
导出的基本语法
导入的基本语法
导出和导入时重命名
模块的默认值
重新导出一个绑定
无绑定导入
加载模块
小结
A ECMAScript 6中较小的改动
B 了解ECMAScript 7(2016)
译者序
关于作者
关于技术评审
序
鸣谢
前言
1 块级作用域绑定
var声明及变量提升(Hoisting)机制
块级声明
循环中的块作用域绑定
全局块作用域绑定
块级绑定最佳实践的进化
小结
2 字符串和正则表达式
更好的Unicode支持
其他字符串变更
其他正则表达式语法变更
模板字面量
小结
3 函 数
函数形参的默认值
处理无命名参数
增强的Function构造函数
展开运算符
name属性
明确函数的多重用途
块级函数
箭头函数
尾调用优化
小结
4 扩展对象的功能性
对象类别
对象字面量语法扩展
新增方法
重复的对象字面量属性
自有属性枚举顺序
增强对象原型
正式的方法定义
小结
5 解构:使数据访问更便捷
为何使用解构功能
对象解构
数组解构
混合解构
解构参数
小结
6 Symbol和Symbol属性
创建Symbol
Symbol的使用方法
Symbol共享体系
Symbol与类型强制转换
Symbol属性检索
通过well-known Symbol暴露内部操作
小结
7 Set集合与Map集合
ECMAScript 5中的Set集合与Map集合
该解决方案的一些问题
ECMAScript 6中的Set集合
ECMAScript 6中的Map集合
小结
8 迭代器(Iterator)和生成器(Generator)
循环语句的问题
什么是迭代器
什么是生成器
可迭代对象和for-of循环
内建迭代器
展开运算符与非数组可迭代对象
高级迭代器功能
异步任务执行
小结
9 JavaScript中的类
ECMAScript 5中的近类结构
类的声明
类表达式
作为一等公民的类
访问器属性
可计算成员名称
生成器方法
静态成员
继承与派生类
在类的构造函数中使用new.target
小结
10 改进的数组功能
创建数组
为所有数组添加的新方法
定型数组
定型数组与普通数组的相似之处
定型数组与普通数组的差别
小结
11 Promise与异步编程
异步编程的背景知识
Promise的基础知识
全局的Promise拒绝处理
串联Promise
响应多个Promise
自Promise继承
基于Promise的异步任务执行
小结
12 代理(Proxy)和反射(Reflection)API
数组问题
代理和反射
创建一个简单的代理
使用set陷阱验证属性
用get陷阱验证对象结构(Object Shape)
使用has陷阱隐藏已有属性
用deleteProperty陷阱防止删除属性
原型代理陷阱
对象可扩展性陷阱
属性描述符陷阱
ownKeys陷阱
函数代理中的apply和construct陷阱
可撤销代理
解决数组问题
将代理用作原型
小结
13 用模块封装代码
什么是模块
导出的基本语法
导入的基本语法
导出和导入时重命名
模块的默认值
重新导出一个绑定
无绑定导入
加载模块
小结
A ECMAScript 6中较小的改动
B 了解ECMAScript 7(2016)