作品简介

ES6(又名ES2105)是JavaScript语言的新标准,2015年6月正式发布后,得到了迅速推广,是目前业界超级活跃的计算机语言。《ES6标准入门(第2版)》是国内仅有的一本ES6教程,在前版基础上增补了大量内容——对标准进行了彻底的解读,所有新增的语法知识(包括即将发布的ES7)都给予了详细介绍,并且紧扣业界开发实践,给出了大量简洁易懂、可以即学即用的示例代码。

《ES6标准入门(第2版)》为中级难度,适合对JavaScript语言或ES5已经有所了解的读者,用来提高水平,了解这门语言的最新发展;也可当作参考手册,查寻ES6/ES7新增的语法点。

阮一峰:著名技术博客作者,JavaScript专家。专注于网站开发技术,超过十年。畅销书《黑客与画家》《软件随想录》的译者。

作品目录

  • 推荐序1
  • 推荐序2
  • 推荐序3
  • 前言
  • 第1章 ECMAScript 6简介
  • 1.1 ECMAScript和JavaScript的关系
  • 1.2 ECMAScript的历史
  • 1.3 部署进度
  • 1.4 Babel转码器
  • 命令行环境
  • 浏览器环境
  • Node.js环境
  • 在线转换
  • 1.5 Traceur转码器
  • 直接插入网页
  • 在线转换
  • 命令行转换
  • Node.js环境的用法
  • 1.6 ECMAScript 7
  • 第2章 let和const命令
  • 2.1 let命令
  • 基本用法
  • 不存在变量提升
  • 暂时性死区
  • 不允许重复声明
  • 2.2 块级作用域
  • 为什么需要块级作用域
  • ES6的块级作用域
  • 2.3 const命令
  • 2.4 跨模块常量
  • 2.5 全局对象的属性
  • 第3章 变量的解构赋值
  • 3.1 数组的解构赋值
  • 基本用法
  • 默认值
  • 3.2 对象的解构赋值
  • 3.3 字符串的解构赋值
  • 3.4 数值和布尔值的解构赋值
  • 3.5 函数参数的解构赋值
  • 3.6 圆括号问题
  • 不能使用圆括号的情况
  • 可以使用圆括号的情况
  • 3.7 用途
  • 第4章 字符串的扩展
  • 4.1 字符的Unicode表示法
  • 4.2 codePointAt()
  • 4.3 String.fromCodePoint()
  • 4.4 字符串的遍历器接口
  • 4.5 at()
  • 4.6 normalize()
  • 4.7 includes(),startsWith(),endsWith()
  • 4.8 repeat()
  • 4.9 padStart(),padEnd()
  • 4.10 模板字符串
  • 4.11 实例:模板编译
  • 4.12 标签模板
  • 4.13 String.raw()
  • 第5章 正则的扩展
  • 5.1 RegExp构造函数
  • 5.2 字符串的正则方法
  • 5.3 u修饰符
  • 5.4 y修饰符
  • 5.5 sticky属性
  • 5.6 flags属性
  • 5.7 RegExp.escape()
  • 第6章 数值的扩展
  • 6.1 二进制和八进制数值表示法
  • 6.2 Number.isFinite(),Number.isNaN()
  • 6.3 Number.parseInt(),Number.parseFloat()
  • 6.4 Number.isInteger()
  • 6.5 Number.EPSILON
  • 6.6 安全整数和Number.isSafeInteger()
  • 6.7 Math对象的扩展
  • Math.trunc()
  • Math.sign()
  • Math.cbrt()
  • Math.clz32()
  • Math.imul()
  • Math.fround()
  • Math.hypot()
  • 对数方法
  • 三角函数方法
  • 6.8 指数运算符
  • 第7章 数组的扩展
  • 7.1 Array.from()
  • 7.2 Array.of()
  • 7.3 数组实例的copyWithin()
  • 7.4 数组实例的find()和findIndex()
  • 7.5 数组实例的fill()
  • 7.6 数组实例的entries()、keys()和values()
  • 7.7 数组实例的includes()
  • 7.8 数组的空位
  • 7.9 数组推导
  • 第8章 函数的扩展
  • 8.1 函数参数的默认值
  • 基本用法
  • 与解构赋值默认值结合使用
  • 参数默认值的位置
  • 函数的length属性
  • 作用域
  • 应用
  • 8.2 rest参数
  • 8.3 扩展运算符
  • 含义
  • 替代数组的apply方法
  • 扩展运算符的应用
  • 8.4 name属性
  • 8.5 箭头函数
  • 基本用法
  • 使用注意点
  • 嵌套的箭头函数
  • 8.6 函数绑定
  • 8.7 尾调用优化
  • 什么是尾调用
  • 尾调用优化
  • 尾递归
  • 递归函数的改写
  • 8.8 函数参数的尾逗号
  • 第9章 对象的扩展
  • 9.1 属性的简洁表示法
  • 9.2 属性名表达式
  • 9.3 方法的name属性
  • 9.4 Object.is()
  • 9.5 Object.assign()
  • 9.6 属性的可枚举性
  • 9.7 属性的遍历
  • 9.8 __proto__属性,Object.setPrototypeOf(),Object.getPrototypeOf()
  • 9.9 对象的扩展运算符
  • 第10章 Symbol
  • 10.1 概述
  • 10.2 作为属性名的Symbol
  • 10.3 实例:消除魔术字符串
  • 10.4 属性名的遍历
  • 10.5 Symbol.for(),Symbol.keyFor()
  • 10.6 内置的Symbol值
  • Symbol.hasInstance
  • Symbol.isConcatSpreadable
  • Symbol.species
  • Symbol.match
  • Symbol.replace
  • Symbol.search
  • Symbol.split
  • Symbol.iterator
  • Symbol.toPrimitive
  • Symbol.toStringTag
  • Symbol.unscopables
  • 第11章 Proxy和Reflect
  • 11.1 Proxy概述
  • 11.2 Proxy实例的方法
  • get()
  • set()
  • apply()
  • has()
  • construct()
  • deleteProperty()
  • defineProperty()
  • enumerate()
  • getOwnPropertyDescriptor()
  • getPrototypeOf()
  • isExtensible()
  • ownKeys()
  • preventExtensions()
  • setPrototypeOf()
  • 11.3 Proxy.revocable()
  • 11.4 Reflect概述
  • 11.5 Reflect对象的方法
  • 第12章 二进制数组
  • 12.1 ArrayBuffer对象
  • ArrayBuffer.prototype.byteLength
  • ArrayBuffer.prototype.slice()
  • ArrayBuffer.isView()
  • 12.2 TypedArray视图
  • 概述
  • 构造函数
  • 数组方法
  • 字节序
  • BYTES_PER_ELEMENT属性
  • ArrayBuffer与字符串的互相转换
  • 溢出
  • TypedArray.prototype.buffer
  • TypedArray.prototype.byteLength,TypedArray.prototype.byteOffset
  • TypedArray.prototype.length
  • TypedArray.prototype.set()
  • TypedArray.prototype.subarray()
  • TypedArray.prototype.slice()
  • TypedArray.of()
  • TypedArray.from()
  • 12.3 复合视图
  • 12.4 DataView视图
  • 12.5 二进制数组的应用
  • AJAX
  • Canvas
  • WebSocket
  • Fetch API
  • File API
  • 第13章 Set和Map数据结构
  • 13.1 Set
  • 基本用法
  • Set实例的属性和方法
  • 遍历操作
  • 13.2 WeakSet
  • 13.3 Map
  • Map结构的目的和基本用法
  • 实例的属性和操作方法
  • 遍历方法
  • 与其他数据结构的互相转换
  • 13.4 WeakMap
  • 第14章 Iterator和for...of循环
  • 14.1 Iterator的概念
  • 14.2 数据结构的默认Iterator接口
  • 14.3 调用Iterator接口的场合
  • 14.4 字符串的Iterator接口
  • 14.5 Iterator接口与Generator函数
  • 14.6 遍历器对象的return()、throw()
  • 14.7 for...of循环
  • 数组
  • Set和Map结构
  • 计算生成的数据结构
  • 类似数组的对象
  • 对象
  • 与其他遍历语法的比较
  • 第15章 Generator函数
  • 15.1 简介
  • 基本概念
  • yield语句
  • 与Iterator接口的关系
  • 15.2 next方法的参数
  • 15.3 for...of循环
  • 15.4 Generator.prototype.throw()
  • 15.5 Generator.prototype.return()
  • 15.6 yield*语句
  • 15.7 作为对象属性的Generator函数
  • 15.8 Generator函数的this
  • 15.9 Generator函数推导
  • 15.10 含义
  • Generator与状态机
  • Generator与协程
  • 15.11 应用
  • 第16章 Promise对象
  • 16.1 Promise的含义
  • 16.2 基本用法
  • 16.3 Promise.prototype.then()
  • 16.4 Promise.prototype.catch()
  • 16.5 Promise.all()
  • 16.6 Promise.race()
  • 16.7 Promise.resolve()
  • 16.8 Promise.reject()
  • 16.9 两个有用的附加方法
  • done()
  • finally()
  • 16.10 应用
  • 加载图片
  • Generator函数与Promise的结合
  • 16.11 async函数
  • 第17章 异步操作和async函数
  • 17.1 基本概念
  • 异步
  • 回调函数
  • Promise
  • 17.2 Generator函数
  • 协程
  • Generator函数的概念
  • Generator函数的数据交换和错误处理
  • 异步任务的封装
  • 17.3 Thunk函数
  • 参数的求值策略
  • Thunk函数的含义
  • JavaScript语言的Thunk函数
  • Thunkify模块
  • Generator函数的流程管理
  • Thunk函数的自动流程管理
  • 17.4 co模块
  • 基本用法
  • co模块的原理
  • 基于Promise对象的自动执行
  • co模块的源码
  • 处理并发的异步操作
  • 17.5 async函数
  • 含义
  • async函数的实现
  • async函数的用法
  • 注意点
  • 与Promise、Generator的比较
  • 第18章 Class
  • 18.1 Class基本语法
  • 概述
  • constructor方法
  • 实例对象
  • name属性
  • Class表达式
  • 不存在变量提升
  • 严格模式
  • 18.2 Class的继承
  • 基本用法
  • 类的prototype属性和__proto__属性
  • extends的继承目标
  • Object.getPrototypeOf()
  • super关键字
  • 实例的__proto__属性
  • 18.3 原生构造函数的继承
  • 18.4 Class的取值函数(getter)和存值函数(setter)
  • 18.5 Class的Generator方法
  • 18.6 Class的静态方法
  • 18.7 Class的静态属性
  • 18.8 new.target属性
  • 18.9 Mixin模式的实现
  • 第19章 修饰器
  • 19.1 类的修饰
  • 19.2 方法的修饰
  • 19.3 为什么修饰器不能用于函数
  • 19.4 core-decorators.js
  • @autobind
  • @readonly
  • @override
  • @deprecate(别名@deprecated)
  • @suppressWarnings
  • 19.5 使用修饰器实现自动发布事件
  • 19.6 Mixin
  • 19.7 Trait
  • 19.8 Babel转码器的支持
  • 第20章 Module
  • 20.1 严格模式
  • 20.2 export命令
  • 20.3 import命令
  • 20.4 模块的整体加载
  • 20.5 module命令
  • 20.6 export default命令
  • 20.7 模块的继承
  • 20.8 ES6模块加载的实质
  • 20.9 循环加载
  • CommonJS模块的加载原理
  • CommonJS模块的循环加载
  • ES6模块的循环加载
  • 20.10 ES6模块的转码
  • ES6 module transpiler
  • SystemJS
  • 第21章 编程风格
  • 21.1 块级作用域
  • let取代var
  • 全局常量和线程安全
  • 严格模式
  • 21.2 字符串
  • 21.3 解构赋值
  • 21.4 对象
  • 21.5 数组
  • 21.6 函数
  • 21.7 Map结构
  • 21.8 Class
  • 21.9 模块
  • 21.10 ESLint的使用
  • 第22章 读懂ECMAScript规格
  • 22.1 概述
  • 22.2 相等运算符
  • 22.3 数组的空位
  • 22.4 数组的map方法
  • 第23章 参考链接
  • 23.1 官方文件
  • 23.2 综合介绍
  • 23.3 let和const
  • 23.4 解构赋值
  • 23.5 字符串
  • 23.6 正则
  • 23.7 数值
  • 23.8 数组
  • 23.9 函数
  • 23.10 对象
  • 23.11 Proxy和Reectt
  • 23.12 Symbol
  • 23.13 二进制数组
  • 23.14 Set和Map
  • 23.15 Iterator
  • 23.16 Generator
  • 23.17 Promise对象
  • 23.18 Class
  • 23.19 Decorator
  • 23.20 Module
  • 23.21 工具
展开全部