阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      ES6 标准入门

      ES6 标准入门

      编辑推荐

      适读人群 :JavaScript 领域研究人员,前端开发人员

      • √ 横跨 ES2015/2016/2017 新标,抢占 JavaScript 制高点
      • √ 由千万级名博、布道引航无数前端入行的阮一峰执笔
      • √ 来自 BAT 一线实践,精彩案例透彻解读新标|保留语法
      • √ 新标首著,凝结多年研究心得,剖析 ES 理解应用难题

      内容简介

      ES6 是下一代 JavaScript 语言标准的统称,每年 6 月发布一次修订版,迄今为止已经发布了 3 个版本,分别是 ES2015、ES2016、ES2017。《ES6 标准入门(第 3 版)》根据 ES2017 标准,详尽介绍了所有新增的语法,对基本概念、设计目的和用法进行了清晰的讲解,给出了大量简单易懂的示例。《ES6 标准入门(第 3 版)》为中级难度,适合那些已经对 JavaScript 语言有一定了解的读者,可以作为学习这门语言全新进展的工具书,也可以作为参考手册供大家随时查阅新语法。

      第 3 版增加了超过 30% 的内容,完全覆盖了 ES2017 标准,相比第 2 版介绍了更多的语法点,还调整了原有章节的文字表达,充实了示例,论述更准确,更易懂易学。

      作者简介

      阮一峰,资深 JavaScript 语言专家,知名技术博客作者,专注于网站开发技术十余年。

      畅销书《黑客与画家》《软件随想录》的译者,现就职于蚂蚁金服集团。

      目录

      第 1 章 ECMAScript 6 简介 1

      • 1.1 ECMAScript 和 JavaScript 的关系 1
      • 1.2 ES6 与 ECMAScript 2015 的关系 1
      • 1.3 语法提案的批准流程 2
      • 1.4 ECMAScript 的历史 3
      • 1.5 部署进度 4
      • 1.6 Babel 转码器 4
      • 1.6.1 配置文件。babelrc 5
      • 1.6.2 命令行转码 babel-cli 6
      • 1.6.3 babel-node 7
      • 1.6.4 babel-register 8
      • 1.6.5 babel-core 8
      • 1.6.6 babel-polyfill 9
      • 1.6.7 浏览器环境 10
      • 1.6.8 在线转换 10
      • 1.6.9 与其他工具的配合 11
      • 1.7 Traceur 转码器 11
      • 1.7.1 直接插入网页 12
      • 1.7.2 在线转换 13
      • 1.7.3 命令行转换 14
      • 1.7.4 Node 环境的用法 15

      第 2 章 let 和 const 命令 17

      • 2.1 let 命令 17
      • 2.1.1 基本用法 17
      • 2.1.2 不存在变量提升 19
      • 2.1.3 暂时性死区 19
      • 2.1.4 不允许重复声明 21
      • 2.2 块级作用域 22
      • 2.2.1 为什么需要块级作用域 22
      • 2.2.2 ES6 的块级作用域 23
      • 2.2.3 块级作用域与函数声明 24
      • 2.2.4 do 表达式 27
      • 2.3 const 命令 28
      • 2.3.1 基本用法 28
      • 2.3.2 本质 29
      • 2.3.3 ES6 声明变量的 6 种方法 30
      • 2.4 顶层对象的属性 30
      • 2.5 global 对象 31

      第 3 章 变量的解构赋值 33

      • 3.1 数组的解构赋值 33
      • 3.1.1 基本用法 33
      • 3.1.2 默认值 35
      • 3.2 对象的解构赋值 37
      • 3.3 字符串的解构赋值 41
      • 3.4 数值和布尔值的解构赋值 41
      • 3.5 函数参数的解构赋值 42
      • 3.6 圆括号问题 43
      • 3.6.1 不能使用圆括号的情况 43
      • 3.6.2 可以使用圆括号的情况 44
      • 3.7 用途 44

      第 4 章 字符串的扩展 49

      • 4.1 字符的 Unicode 表示法 49
      • 4.2 codePointAt() 50
      • 4.3 String.fromCodePoint() 52
      • 4.4 字符串的遍历器接口 52
      • 4.5 at() 53
      • 4.6 normalize() 53
      • 4.7 includes()、startsWith()、endsWith() 54
      • 4.8 repeat() 55
      • 4.9 padStart()、padEnd() 56
      • 4.10 模板字符串 57
      • 4.11 实例:模板编译 60
      • 4.12 标签模板 62
      • 4.13 String.raw() 67
      • 4.14 模板字符串的限制 68

      第 5 章 正则的扩展 71

      • 5.1 RegExp 构造函数 71
      • 5.2 字符串的正则方法 72
      • 5.3 u 修饰符 72
      • 5.4 y 修饰符 74
      • 5.5 sticky 属性 77
      • 5.6 flags 属性 77
      • 5.7 s 修饰符:dotAll 模式 78
      • 5.8 后行断言 79
      • 5.9 Unicode 属性类 80
      • 5.10 具名组匹配 81
      • 5.10.1 简介 81
      • 5.10.2 解构赋值和替换 82
      • 5.10.3 引用 83

      第 6 章 数值的扩展 85

      • 6.1 二进制和八进制表示法 85
      • 6.2 Number.isFinite()、Number.isNaN() 86
      • 6.3 Number.parseInt()、Number.parseFloat() 87
      • 6.4 Number.isInteger() 88
      • 6.5 Number.EPSILON 88
      • 6.6 安全整数和 Number.isSafeInteger() 89
      • 6.7 Math 对象的扩展 92
      • 6.7.1 Math.trunc() 92
      • 6.7.2 Math.sign() 92
      • 6.7.3 Math.cbrt() 93
      • 6.7.4 Math.clz32() 94
      • 6.7.5 Math.imul() 95
      • 6.7.6 Math.fround() 95
      • 6.7.7 Math.hypot() 96
      • 6.7.8 对数方法 96
      • 6.7.9 双曲函数方法 98
      • 6.8 Math.signbit() 98
      • 6.9 指数运算符 99
      • 6.10 Integer 数据类型 99
      • 6.10.1 简介 99
      • 6.10.2 运算 100

      第 7 章 函数的扩展 103

      • 7.1 函数参数的默认值 103
      • 7.1.1 基本用法 103
      • 7.1.2 与解构赋值默认值结合使用 105
      • 7.1.3 参数默认值的位置 107
      • 7.1.4 函数的 length 属性 108
      • 7.1.5 作用域 108
      • 7.1.6 应用 111
      • 7.2 rest 参数 112
      • 7.3 严格模式 113
      • 7.4 name 属性 115
      • 7.5 箭头函数 116
      • 7.5.1 基本用法 116
      • 7.5.2 注意事项 118
      • 7.5.3 嵌套的箭头函数 121
      • 7.6 绑定 this 123
      • 7.7 尾调用优化 124
      • 7.7.1 什么是尾调用 124
      • 7.7.2 尾调用优化 125
      • 7.7.3 尾递归 126
      • 7.7.4 递归函数的改写 128
      • 7.7.5 严格模式 129
      • 7.7.6 尾递归优化的实现 129
      • 7.8 函数参数的尾逗号 132

      第 8 章 数组的扩展 133

      • 8.1 扩展运算符 133
      • 8.1.1 含义 133
      • 8.1.2 替代数组的 apply 方法 134
      • 8.1.3 扩展运算符的应用 136
      • 8.2 Array.from() 139
      • 8.3 Array.of() 142
      • 8.4 数组实例的 copyWithin() 143
      • 8.5 数组实例的 find() 和 findIndex() 144
      • 8.6 数组实例的 fill() 145
      • 8.7 数组实例的 entries()、keys() 和 values() 145
      • 8.8 数组实例的 includes() 146
      • 8.9 数组的空位 147

      第 9 章 对象的扩展 151

      • 9.1 属性的简洁表示法 151
      • 9.2 属性名表达式 154
      • 9.3 方法的 name 属性 156
      • 9.4 Object.is() 157
      • 9.5 Object.assign() 158
      • 9.5.1 基本用法 158
      • 9.5.2 注意点 160
      • 9.5.3 常见用途 161
      • 9.6 属性的可枚举性 163
      • 9.7 属性的遍历 165
      • 9.8 proto 属性、Object.setPrototypeOf()、Object.getPrototypeOf() 166
      • 9.8.1 proto 属性 166
      • 9.8.2 Object.setPrototypeOf() 167
      • 9.8.3 Object.getPrototypeOf() 168
      • 9.9 Object.keys()、Object.values()、Object.entries() 169
      • 9.9.1 Object.keys() 169
      • 9.9.2 Object.values() 170
      • 9.9.3 Object.entries 171
      • 9.10 对象的扩展运算符 173
      • 9.11 Object.getOwnPropertyDescriptors() 177
      • 9.12 Null 传导运算符 181

      第 10 章 Symbol 183

      • 10.1 概述 183
      • 10.2 作为属性名的 Symbol 185
      • 10.3 实例:消除魔术字符串 188
      • 10.4 属性名的遍历 189
      • 10.5 Symbol.for()、Symbol.keyFor() 191
      • 10.6 实例:模块的 Singleton 模式 192
      • 10.7 内置的 Symbol 值 194
      • 10.7.1 Symbol.hasInstance 194
      • 10.7.2 Symbol.isConcatSpreadable 195
      • 10.7.3 Symbol.species 196
      • 10.7.4 Symbol.match 197
      • 10.7.5 Symbol.replace 197
      • 10.7.6 Symbol.search 198
      • 10.7.7 Symbol.split 198
      • 10.7.8 Symbol.iterator 199
      • 10.7.9 Symbol.toPrimitive 200
      • 10.7.10 Symbol.toStringTag 201
      • 10.7.11 Symbol.unscopables 202

      第 11 章 Set 和 Map 数据结构 205

      • 11.1 Set 205
      • 11.1.1 基本用法 205
      • 11.1.2 Set 实例的属性和方法 207
      • 11.1.3 遍历操作 208
      • 11.2 WeakSet 212
      • 11.2.1 含义 212
      • 11.2.2 语法 212
      • 11.3 Map 214
      • 11.3.1 含义和基本用法 214
      • 11.3.2 实例的属性和操作方法 218
      • 11.3.3 遍历方法 220
      • 11.3.4 与其他数据结构的互相转换 222
      • 11.4 WeakMap 225
      • 11.4.1 含义 225
      • 11.4.2 WeakMap 的语法 227
      • 11.4.3 WeakMap 示例 228
      • 11.4.4 WeakMap 的用途 229

      第 12 章 Proxy 233

      • 12.1 概述 233
      • 12.2 Proxy 实例的方法 237
      • 12.2.1 get() 237
      • 12.2.2 set() 241
      • 12.2.3 apply() 243
      • 12.2.4 has() 244
      • 12.2.5 construct() 246
      • 12.2.6 deleteProperty() 247
      • 12.2.7 defineProperty() 248
      • 12.2.8 getOwnPropertyDescriptor() 248
      • 12.2.9 getPrototypeOf() 249
      • 12.2.10 isExtensible() 249
      • 12.2.11 ownKeys() 250
      • 12.2.12 preventExtensions() 254
      • 12.2.13 setPrototypeOf() 255
      • 12.3 Proxy.revocable() 255
      • 12.4 this 问题 256
      • 12.5 实例:Web 服务的客户端 258

      第 13 章 Reflect 259

      • 13.1 概述 259
      • 13.2 静态方法 261
      • 13.3 实例:使用 Proxy 实现观察者模式 270

      第 14 章 Promise 对象 273

      • 14.1 Promise 的含义 273
      • 14.2 基本用法 274
      • 14.3 Promise.prototype.then() 278
      • 14.4 Promise.prototype.catch() 279
      • 14.5 Promise.all() 285
      • 14.6 Promise.race() 287
      • 14.7 Promise.resolve() 288
      • 14.8 Promise.reject() 290
      • 14.9 两个有用的附加方法 291
      • 14.10 应用 292
      • 14.11 Promise.try() 294

      第 15 章 Iterator 和 for…of 循环 297

      • 15.1 Iterator(遍历器)的概念 297
      • 15.2 默认 Iterator 接口 300
      • 15.3 调用 Iterator 接口的场合 305
      • 15.4 字符串的 Iterator 接口 307
      • 15.5 Iterator 接口与 Generator 函数 308
      • 15.6 遍历器对象的 return()、throw() 309
      • 15.7 for…of 循环 310

      第 16 章 Generator 函数的语法 317

      • 16.1 简介 317
      • 16.2 next 方法的参数 323
      • 16.3 for…of 循环 325
      • 16.4 Generator.prototype.throw() 328
      • 16.5 Generator.prototype.return() 334
      • 16.6 yield*表达式 335
      • 16.7 作为对象属性的 Generator 函数 342
      • 16.8 Generator 函数 this 342
      • 16.9 含义 345
      • 16.10 应用 347

      第 17 章 Generator 函数的异步应用 355

      • 17.1 传统方法 355
      • 17.2 基本概念 355
      • 17.3 Generator 函数 357
      • 17.4 Thunk 函数 361
      • 17.5 co 模块 368
      • 17.6 实例:处理 Stream 373

      第 18 章 async 函数 375

      • 18.1 含义 375
      • 18.2 用法 377
      • 18.3 语法 379
      • 18.4 async 函数的实现原理 386
      • 18.5 其他异步处理方法的比较 387
      • 18.6 实例:按顺序完成异步操作 388
      • 18.7 异步遍历器 390

      第 19 章 Class 的基本语法 399

      • 19.1 简介 399
      • 19.2 严格模式 403
      • 19.3 constructor 方法 403
      • 19.4 类的实例对象 404
      • 19.5 Class 表达式 406
      • 19.6 不存在变量提升 407
      • 19.7 私有方法 408
      • 19.8 私有属性 409
      • 19.9 this 的指向 410
      • 19.10 name 属性 412
      • 19.11 Class 的取值函数(getter)和存值函数(setter) 412
      • 19.12 Class 的 Generator 方法 413
      • 19.13 Class 的静态方法 414
      • 19.14 Class 的静态属性和实例属性 415
      • 19.15 new.target 属性 418

      第 20 章 Class 的继承 421

      • 20.1 简介 421
      • 20.2 Object.getPrototypeOf() 423
      • 20.3 super 关键字 423
      • 20.4 类的 prototype 属性和 proto 属性 429
      • 20.4.1 extends 的继承目标 430
      • 20.4.2 实例的 proto 属性 432
      • 20.5 原生构造函数的继承 432
      • 20.6 Mixin 模式的实现 436

      第 21 章 修饰器 439

      • 21.1 类的修饰 439
      • 21.2 方法的修饰 442
      • 21.3 为什么修饰器不能用于函数 444
      • 21.4 core-decorators.js 446
      • 21.5 使用修饰器实现自动发布事件 449
      • 21.6 Mixin 450
      • 21.7 Trait 453
      • 21.8 Babel 转码器的支持 456

      第 22 章 Module 的语法 457

      • 22.1 概述 457
      • 22.2 严格模式 458
      • 22.3 export 命令 459
      • 22.4 import 命令 462
      • 22.5 模块的整体加载 464
      • 22.6 export default 命令 465
      • 22.7 export 与 import 的复合写法 468
      • 22.8 模块的继承 469
      • 22.9 跨模块常量 470
      • 22.10 import() 471
      • 22.10.1 简介 471
      • 22.10.2 适用场合 472
      • 22.10.3 注意点 473

      第 23 章 Module 的加载实现 475

      • 23.1 浏览器加载 475
      • 23.1.1 传统方法 475
      • 23.1.2 加载规则 476
      • 23.2 ES6 模块与 CommonJS 模块的差异 477
      • 23.3 Node 加载 481
      • 23.4 循环加载 485
      • 23.5 ES6 模块的转码 492

      第 24 章 编程风格 495

      • 24.1 块级作用域 495
      • 24.2 字符串 497
      • 24.3 解构赋值 497
      • 24.4 对象 498
      • 24.5 数组 500
      • 24.6 函数 501
      • 24.7 Map 结构 503
      • 24.8 Class 503
      • 24.9 模块 504
      • 24.10 ESLint 的使用 506

      第 25 章 读懂 ECMAScript 规格 509

      • 25.1 概述 509
      • 25.2 相等运算符 510
      • 25.3 数组的空位 511
      • 25.4 数组的 map 方法 513

      第 26 章 ArrayBuffer 517

      • 26.1 ArrayBuffer 对象 518
      • 26.2 TypedArray 视图 521
      • 26.3 复合视图 534
      • 26.4 DataView 视图 535
      • 26.5 二进制数组的应用 537
      • 26.6 SharedArrayBuffer 541
      • 26.7 Atomics 对象 543
      卖前端学习教程

      只需几十元,就能买到培训班的内部教程!开启高薪之路!

      零基础小白阿里P7的教程都有!

      同时长期收购所有培训班的前端教程

      目录
      目录