计算机
类型
9.0
豆瓣评分
可以朗读
语音朗读
388千字
字数
2017-09-01
发行日期
展开全部
主编推荐语
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月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。