展开全部

主编推荐语

ES6详解: 涵盖ES2017新语法,中级难度,举例易懂。

内容简介

ES6是下一代JavaScript语言标准的统称,从2015年开始,每年6月发布一次修订版,当前最新的修订版是ES2017。本书涵盖了ES6与上一代ES5标准的所有不同之处,详尽介绍了新增的语法,对基本概念和设计目的进行了清晰的讲解,并且给出了大量简单易懂的示例。本书为中级难度,适合那些已经对JavaScript语言(ES5标准)有所了解的读者,可以用来学习这门语言的最新进展,也可以作为参考手册供大家随时查阅新语法的用法。第三版增加了约40%的内容,完全覆盖了ES2017标准,相比第二版的ES2015标准多了不少语法点。除了新增章节,还调整了文字表达,充实了示例,使得论述更准确,讲解更易懂。

目录

  • 版权信息
  • 内容简介
  • 推荐序1
  • 推荐序2
  • 推荐序3
  • 第3版前言
  • 第1版前言
  • 第1章 ECMAScript 6简介
  • 1.1 ECMAScript和JavaScript的关系
  • 1.2 ES6与ECMAScript 2015的关系
  • 1.3 语法提案的批准流程
  • 1.4 ECMAScript的历史
  • 1.5 部署进度
  • 1.6 Babel 转码器
  • 1.6.1 配置文件.babelrc
  • 1.6.2 命令行转码babel-cli
  • 1.6.3 babel-node
  • 1.6.4 babel-register
  • 1.6.5 babel-core
  • 1.6.6 babel-polyfill
  • 1.6.7 浏览器环境
  • 1.6.8 在线转换
  • 1.6.9 与其他工具的配合
  • 1.7 Traceur转码器
  • 1.7.1 直接插入网页
  • 1.7.2 在线转换
  • 1.7.3 命令行转换
  • 1.7.4 Node环境的用法
  • 第2章 let和const命令
  • 2.1 let 命令
  • 2.1.1 基本用法
  • 2.1.2 不存在变量提升
  • 2.1.3 暂时性死区
  • 2.1.4 不允许重复声明
  • 2.2 块级作用域
  • 2.2.1 为什么需要块级作用域
  • 2.2.2 ES6的块级作用域
  • 2.2.3 块级作用域与函数声明
  • 2.2.4 do表达式
  • 2.3 const命令
  • 2.3.1 基本用法
  • 2.3.2 本质
  • 2.3.3 ES6声明变量的6种方法
  • 2.4 顶层对象的属性
  • 2.5 global对象
  • 第3章 变量的解构赋值
  • 3.1 数组的解构赋值
  • 3.1.1 基本用法
  • 3.1.2 默认值
  • 3.2 对象的解构赋值
  • 3.3 字符串的解构赋值
  • 3.4 数值和布尔值的解构赋值
  • 3.5 函数参数的解构赋值
  • 3.6 圆括号问题
  • 3.6.1 不能使用圆括号的情况
  • 3.6.2 可以使用圆括号的情况
  • 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()
  • 4.14 模板字符串的限制
  • 第5章 正则的扩展
  • 5.1 RegExp构造函数
  • 5.2 字符串的正则方法
  • 5.3 u修饰符
  • 5.4 y修饰符
  • 5.5 sticky属性
  • 5.6 flags属性
  • 5.7 s修饰符:dotAll模式
  • 5.8 后行断言
  • 5.9 Unicode属性类
  • 5.10 具名组匹配
  • 5.10.1 简介
  • 5.10.2 解构赋值和替换
  • 5.10.3 引用
  • 第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对象的扩展
  • 6.7.1 Math.trunc()
  • 6.7.2 Math.sign()
  • 6.7.3 Math.cbrt()
  • 6.7.4 Math.clz32()
  • 6.7.5 Math.imul()
  • 6.7.6 Math.fround()
  • 6.7.7 Math.hypot()
  • 6.7.8 对数方法
  • 6.7.9 双曲函数方法
  • 6.8 Math.signbit()
  • 6.9 指数运算符
  • 6.10 Integer数据类型
  • 6.10.1 简介
  • 6.10.2 运算
  • 第7章 函数的扩展
  • 7.1 函数参数的默认值
  • 7.1.1 基本用法
  • 7.1.2 与解构赋值默认值结合使用
  • 7.1.3 参数默认值的位置
  • 7.1.4 函数的length属性
  • 7.1.5 作用域
  • 7.1.6 应用
  • 7.2 rest参数
  • 7.3 严格模式
  • 7.4 name属性
  • 7.5 箭头函数
  • 7.5.1 基本用法
  • 7.5.2 注意事项
  • 7.5.3 嵌套的箭头函数
  • 7.6 绑定this
  • 7.7 尾调用优化
  • 7.7.1 什么是尾调用
  • 7.7.2 尾调用优化
  • 7.7.3 尾递归
  • 7.7.4 递归函数的改写
  • 7.7.5 严格模式
  • 7.7.6 尾递归优化的实现
  • 7.8 函数参数的尾逗号
  • 第8章 数组的扩展
  • 8.1 扩展运算符
  • 8.1.1 含义
  • 8.1.2 替代数组的apply方法
  • 8.1.3 扩展运算符的应用
  • 8.2 Array.from()
  • 8.3 Array.of()
  • 8.4 数组实例的copyWithin()
  • 8.5 数组实例的find()和findIndex()
  • 8.6 数组实例的fill()
  • 8.7 数组实例的entries()、keys()和values()
  • 8.8 数组实例的includes()
  • 8.9 数组的空位
  • 第9章 对象的扩展
  • 9.1 属性的简洁表示法
  • 9.2 属性名表达式
  • 9.3 方法的name属性
  • 9.4 Object.is()
  • 9.5 Object.assign()
  • 9.5.1 基本用法
  • 9.5.2 注意点
  • 9.5.3 常见用途
  • 9.6 属性的可枚举性
  • 9.7 属性的遍历
  • 9.8 __proto__ 属性、Object.setPrototypeOf()、Object.getPrototypeOf()
  • 9.8.1 __proto__ 属性
  • 9.8.2 Object.setPrototypeOf()
  • 9.8.3 Object.getPrototypeOf()
  • 9.9 Object.keys()、Object.values()、Object.entries()
  • 9.9.1 Object.keys()
  • 9.9.2 Object.values()
  • 9.9.3 Object.entries
  • 9.10 对象的扩展运算符
  • 9.11 Object.getOwnPropertyDescriptors()
  • 9.12 Null传导运算符
  • 第10章 Symbol
  • 10.1 概述
  • 10.2 作为属性名的Symbol
  • 10.3 实例:消除魔术字符串
  • 10.4 属性名的遍历
  • 10.5 Symbol.for()、Symbol.keyFor()
  • 10.6 实例:模块的Singleton模式
  • 10.7 内置的Symbol值
  • 10.7.1 Symbol.hasInstance
  • 10.7.2 Symbol.isConcatSpreadable
  • 10.7.3 Symbol.species
  • 10.7.4 Symbol.match
  • 10.7.5 Symbol.replace
  • 10.7.6 Symbol.search
  • 10.7.7 Symbol.split
  • 10.7.8 Symbol.iterator
  • 10.7.9 Symbol.toPrimitive
  • 10.7.10 Symbol.toStringTag
  • 10.7.11 Symbol.unscopables
  • 第11章 Set和Map数据结构
  • 11.1 Set
  • 11.1.1 基本用法
  • 11.1.2 Set实例的属性和方法
  • 11.1.3 遍历操作
  • 11.2 WeakSet
  • 11.2.1 含义
  • 11.2.2 语法
  • 11.3 Map
  • 11.3.1 含义和基本用法
  • 11.3.2 实例的属性和操作方法
  • 11.3.3 遍历方法
  • 11.3.4 与其他数据结构的互相转换
  • 11.4 WeakMap
  • 11.4.1 含义
  • 11.4.2 WeakMap的语法
  • 11.4.3 WeakMap示例
  • 11.4.4 WeakMap的用途
  • 第12章 Proxy
  • 12.1 概述
  • 12.2 Proxy实例的方法
  • 12.2.1 get()
  • 12.2.2 set()
  • 12.2.3 apply()
  • 12.2.4 has()
  • 12.2.5 construct()
  • 12.2.6 deleteProperty()
  • 12.2.7 defineProperty()
  • 12.2.8 getOwnPropertyDescriptor()
  • 12.2.9 getPrototypeOf()
  • 12.2.10 isExtensible()
  • 12.2.11 ownKeys()
  • 12.2.12 preventExtensions()
  • 12.2.13 setPrototypeOf()
  • 12.3 Proxy.revocable()
  • 12.4 this问题
  • 12.5 实例:Web服务的客户端
  • 第13章 Reflect
  • 13.1 概述
  • 13.2 静态方法
  • 13.2.1 Reflect.get(target, name, receiver)
  • 13.2.2 Reflect.set(target, name, value, receiver)
  • 13.2.3 Reflect.has(obj, name)
  • 13.2.4 Reflect.deleteProperty(obj, name)
  • 13.2.5 Reflect.construct(target, args)
  • 13.2.6 Reflect.getPrototypeOf(obj)
  • 13.2.7 Reflect.setPrototypeOf(obj, newProto)
  • 13.2.8 Reflect.apply(func, thisArg, args)
  • 13.2.9 Reflect.defineProperty(target, propertyKey, attributes)
  • 13.2.10 Reflect.getOwnPropertyDescriptor (target, propertyKey)
  • 13.2.11 Reflect.isExtensible (target)
  • 13.2.12 Reflect.preventExtensions(target)
  • 13.2.13 Reflect.ownKeys (target)
  • 13.3 实例:使用Proxy实现观察者模式
  • 第14章 Promise对象
  • 14.1 Promise的含义
  • 14.2 基本用法
  • 14.3 Promise.prototype.then()
  • 14.4 Promise.prototype.catch()
  • 14.5 Promise.all()
  • 14.6 Promise.race()
  • 14.7 Promise.resolve()
  • 14.8 Promise.reject()
  • 14.9 两个有用的附加方法
  • 14.9.1 done()
  • 14.9.2 finally()
  • 14.10 应用
  • 14.10.1 加载图片
  • 14.10.2 Generator函数与Promise的结合
  • 14.11 Promise.try()
  • 第15章 Iterator和for...of循环
  • 15.1 Iterator(遍历器)的概念
  • 15.2 默认Iterator接口
  • 15.3 调用Iterator接口的场合
  • 15.4 字符串的Iterator接口
  • 15.5 Iterator接口与Generator函数
  • 15.6 遍历器对象的return()、throw()
  • 15.7 for...of循环
  • 15.7.1 数组
  • 15.7.2 Set和Map结构
  • 15.7.3 计算生成的数据结构
  • 15.7.4 类似数组的对象
  • 15.7.5 对象
  • 15.7.6 与其他遍历语法的比较
  • 第16章 Generator函数的语法
  • 16.1 简介
  • 16.1.1 基本概念
  • 16.1.2 yield表达式
  • 16.1.3 与Iterator接口的关系
  • 16.2 next方法的参数
  • 16.3 for...of循环
  • 16.4 Generator.prototype.throw()
  • 16.5 Generator.prototype.return()
  • 16.6 yield*表达式
  • 16.7 作为对象属性的Generator函数
  • 16.8 Generator函数this
  • 16.9 含义
  • 16.9.1 Generator与状态机
  • 16.9.2 Generator与协程
  • 16.10 应用
  • 16.10.1 异步操作的同步化表达
  • 16.10.2 控制流管理
  • 16.10.3 部署Iterator接口
  • 16.10.4 作为数据结构
  • 第17章 Generator函数的异步应用
  • 17.1 传统方法
  • 17.2 基本概念
  • 17.2.1 异步
  • 17.2.2 回调函数
  • 17.2.3 Promise
  • 17.3 Generator函数
  • 17.3.1 协程
  • 17.3.2 协程的Generator函数实现
  • 17.3.3 Generator函数的数据交换和错误处理
  • 17.3.4 异步任务的封装
  • 17.4 Thunk函数
  • 17.4.1 参数的求值策略
  • 17.4.2 Thunk函数的含义
  • 17.4.3 JavaScript语言的Thunk函数
  • 17.4.4 Thunkify模块
  • 17.4.5 Generator函数的流程管理
  • 17.4.6 Thunk函数的自动流程管理
  • 17.5 co模块
  • 17.5.1 基本用法
  • 17.5.2 co模块的原理
  • 17.5.3 基于Promise对象的自动执行
  • 17.5.4 co模块的源码
  • 17.5.5 处理并发的异步操作
  • 17.6 实例:处理 Stream
  • 第18章 async函数
  • 18.1 含义
  • 18.2 用法
  • 18.3 语法
  • 18.3.1 返回Promise对象
  • 18.3.2 Promise对象的状态变化
  • 18.3.3 await命令
  • 18.3.4 错误处理
  • 18.3.5 使用注意点
  • 18.4 async函数的实现原理
  • 18.5 其他异步处理方法的比较
  • 18.6 实例:按顺序完成异步操作
  • 18.7 异步遍历器
  • 18.7.1 异步遍历的接口
  • 18.7.2 for await...of
  • 18.7.3 异步Generator函数
  • 18.7.4 yield*语句
  • 第19章 Class的基本语法
  • 19.1 简介
  • 19.2 严格模式
  • 19.3 constructor方法
  • 19.4 类的实例对象
  • 19.5 Class表达式
  • 19.6 不存在变量提升
  • 19.7 私有方法
  • 19.8 私有属性
  • 19.9 this的指向
  • 19.10 name属性
  • 19.11 Class的取值函数(getter)和存值函数(setter)
  • 19.12 Class的Generator方法
  • 19.13 Class的静态方法
  • 19.14 Class的静态属性和实例属性
  • 19.14.1 Class的实例属性
  • 19.14.2 Class的静态属性
  • 19.15 new.target属性
  • 第20章 Class的继承
  • 20.1 简介
  • 20.2 Object.getPrototypeOf()
  • 20.3 super关键字
  • 20.4 类的prototype属性和 __proto__ 属性
  • 20.4.1 extends的继承目标
  • 20.4.2 实例的 __proto__ 属性
  • 20.5 原生构造函数的继承
  • 20.6 Mixin模式的实现
  • 第21章 修饰器
  • 21.1 类的修饰
  • 21.2 方法的修饰
  • 21.3 为什么修饰器不能用于函数
  • 21.4 core-decorators.js
  • 21.5 使用修饰器实现自动发布事件
  • 21.6 Mixin
  • 21.7 Trait
  • 21.8 Babel转码器的支持
  • 第22章 Module的语法
  • 22.1 概述
  • 22.2 严格模式
  • 22.3 export命令
  • 22.4 import命令
  • 22.5 模块的整体加载
  • 22.6 export default命令
  • 22.7 export与import的复合写法
  • 22.8 模块的继承
  • 22.9 跨模块常量
  • 22.10 import()
  • 22.10.1 简介
  • 22.10.2 适用场合
  • 22.10.3 注意点
  • 第23章 Module的加载实现
  • 23.1 浏览器加载
  • 23.1.1 传统方法
  • 23.1.2 加载规则
  • 23.2 ES6模块与CommonJS模块的差异
  • 23.3 Node加载
  • 23.3.1 概述
  • 23.3.2 import命令加载CommonJS模块
  • 23.3.3 require命令加载ES6模块
  • 23.4 循环加载
  • 23.4.1 CommonJS模块的加载原理
  • 23.4.2 CommonJS模块的循环加载
  • 23.4.3 ES6模块的循环加载
  • 23.5 ES6模块的转码
  • 23.5.1 ES6 module transpiler
  • 23.5.2 SystemJS
  • 第24章 编程风格
  • 24.1 块级作用域
  • 24.1.1 let取代var
  • 24.1.2 全局常量和线程安全
  • 24.2 字符串
  • 24.3 解构赋值
  • 24.4 对象
  • 24.5 数组
  • 24.6 函数
  • 24.7 Map结构
  • 24.8 Class
  • 24.9 模块
  • 24.10 ESLint的使用
  • 第25章 读懂ECMAScript规格
  • 25.1 概述
  • 25.2 相等运算符
  • 25.3 数组的空位
  • 25.4 数组的map方法
  • 第26章 ArrayBuffer
  • 26.1 ArrayBuffer对象
  • 26.1.1 概述
  • 26.1.2 ArrayBuffer.prototype.byteLength
  • 26.1.3 ArrayBuffer.prototype.slice()
  • 26.1.4 ArrayBuffer.isView()
  • 26.2 TypedArray视图
  • 26.2.1 概述
  • 26.2.2 构造函数
  • 26.2.3 数组方法
  • 26.2.4 字节序
  • 26.2.5 BYTES_PER_ELEMENT属性
  • 26.2.6 ArrayBuffer与字符串的互相转换
  • 26.2.7 溢出
  • 26.2.8 TypedArray.prototype.buffer
  • 26.2.9 TypedArray.prototype.byteLength、TypedArray.prototype.byteOffset
  • 26.2.10 TypedArray.prototype.length
  • 26.2.11 TypedArray.prototype.set()
  • 26.2.12 TypedArray.prototype.subarray()
  • 26.2.13 TypedArray.prototype.slice()
  • 26.2.14 TypedArray.of()
  • 26.2.15 TypedArray.from()
  • 26.3 复合视图
  • 26.4 DataView视图
  • 26.5 二进制数组的应用
  • 26.5.1 AJAX
  • 26.5.2 Canvas
  • 26.5.3 WebSocket
  • 26.5.4 Fetch API
  • 26.5.5 File API
  • 26.6 SharedArrayBuffer
  • 26.7 Atomics对象
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

电子工业出版社

电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。