跳转到主要内容

书籍

ES6 教程

全面介绍 ECMAScript 6 新引入的语法特性。适合已有 JavaScript 基础、想系统补齐现代语法的读者。

37 页更新于 1 个月前

开始阅读
CC BY-SA 3.0

目录37

  1. 01 ECMAScript 6 简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企... 2 年前
  2. 02 let 和 const 命令 let 命令 基本用法 ES6 新增了 let命令,用来声明变量。它的用法类似于 var,但是所声明的变量,只在 let命令所在的代码块内有效。 { let a = 10; var b = 1; } a /... 5 年前
  3. 03 变量的解构赋值 数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 以前,为变量赋值,只能直接指定值。 let a = 1; let b = 2;... 6 年前
  4. 04 字符串的扩展 本章介绍 ES6 对字符串的改造和增强,下一章介绍字符串对象的新增方法。 字符的 Unicode 表示法 ES6 加强了对 Unicode 的支持,允许采用 \uxxxx形式表示一个字符,其中 xxxx表示字符的 ... 5 年前
  5. 05 字符串的新增方法 本章介绍字符串对象的新增方法。 String.fromCodePoint() ES5 提供 String.fromCharCode()方法,用于从 Unicode 码点返回对应字符,但是这个方法不能识别码点大于 0... 1 年前
  6. 06 正则的扩展 RegExp 构造函数 在 ES5 中, RegExp构造函数的参数有两种情况。 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag)。 var regex = new RegExp('xy... 1 年前
  7. 07 数值的扩展 二进制和八进制表示法 ES6 提供了二进制和八进制数值的新的写法,分别用前缀 0b(或 0B)和 0o(或 0O)表示。 0b111110111 === 503 // true 0o767 === 503 // t... 1 年前
  8. 08 函数的扩展 函数参数的默认值 基本用法 ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 function log(x, y) { y = y || 'World'; console.log(x, y... 4 年前
  9. 09 数组的扩展 扩展运算符 含义 扩展运算符(spread)是三个点( ...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。 console.log(...[1, 2, 3]) // 1 2 3 cons... 1 个月前
  10. 10 对象的扩展 对象(object)是 JavaScript 最重要的数据结构。ES6 对它进行了重大升级,本章介绍数据结构本身的改变,下一章介绍 Object对象的新增方法。 属性的简洁表示法 ES6 允许在大括号里面,直接写入... 1 年前
  11. 11 对象的新增方法 本章介绍 Object 对象的新增方法。 Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符( ==)和严格相等运算符( ===)。它们都有缺点,前者会自动转换数据类型,后者的 NaN不... 4 年前
  12. 12 运算符的扩展 本章介绍 ES6 后续标准添加的一些运算符。 指数运算符 ES2016 新增了一个指数运算符( **)。 2 ** 2 // 4 2 ** 3 // 8 这个运算符的一个特点是右结合,而不是常见的左结合。多个指数运... 3 年前
  13. 13 Symbol 概述 ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性... 3 年前
  14. 14 Set 和 Map 数据结构 Set 基本用法 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set本身是一个构造函数,用来生成 Set 数据结构。 const s = new Set(); [2, ... 2 年前
  15. 15 Proxy 概述 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。 Proxy 可以理解成,在目标对象之前架设一层“拦截”,外... 3 年前
  16. 16 Reflect 概述 Reflect对象与 Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。 Reflect对象的设计目的有这样几个。 (1) 将 Object对象的一些明显属于语言内部的方法(比如 Object... 6 年前
  17. 17 Promise 对象 Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了 Promise对象... 1 个月前
  18. 18 Iterator 和 for...of 循环 Iterator(遍历器)的概念 JavaScript 原有的表示“集合”的数据结构,主要是数组( Array)和对象( Object),ES6 又添加了 Map和 Set。这样就有了四种数据集合,用户还可以组合使... 1 个月前
  19. 19 Generator 函数的语法 简介 基本概念 Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍 Generator 函数的语法和 API,它的异步编程应用请看《Generator 函数的异... 2 年前
  20. 20 Generator 函数的异步应用 异步编程对 JavaScript 语言太重要。JavaScript 语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可。本章主要介绍 Generator 函数如何完成异步操作。 传统方法 ES6... 6 年前
  21. 21 async 函数 含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便。 async 函数是什么?一句话,它就是 Generator 函数的语法糖。 前文有一个 Generator 函数,依次读取两个文件。 c... 4 年前
  22. 22 Class 的基本语法 类的由来 JavaScript 语言中,生成实例对象的传统方法是通过构造函数。下面是一个例子。 function Point(x, y) { this.x = x; this.y = y; } Point.... 1 年前
  23. 23 Class 的继承 简介 Class 可以通过 extends关键字实现继承,让子类继承父类的属性和方法。extends 的写法比 ES5 的原型链继承,要清晰和方便很多。 class Point { } class ColorPoi... 2 年前
  24. 24 Module 的语法 概述 历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby 的 require、Python 的 im... 1 个月前
  25. 25 Module 的加载实现 上一章介绍了模块的语法,本章介绍如何在浏览器和 Node.js 之中加载 ES6 模块,以及实际开发中经常遇到的一些问题(比如循环加载)。 浏览器加载 传统方法 HTML 网页中,浏览器通过 <script>标签加... 2 年前
  26. 26 编程风格 本章探讨如何将 ES6 的新语法,运用到编码实践之中,与传统的 JavaScript 语法结合在一起,写出合理的、易于阅读和维护的代码。 多家公司和组织已经公开了它们的风格规范,下面的内容主要参考了 Airbnb ... 3 年前
  27. 27 读懂 ECMAScript 规格 概述 规格文件是计算机语言的官方标准,详细描述语法规则和实现方法。 一般来说,没有必要阅读规格,除非你要写编译器。因为规格写得非常抽象和精炼,又缺乏实例,不容易理解,而且对于解决实际的应用问题,帮助不大。但是,如果... 6 年前
  28. 28 异步遍历器 同步遍历器的问题 《遍历器》一章说过,Iterator 接口是一种数据遍历的协议,只要调用遍历器对象的 next方法,就会得到一个对象,表示当前遍历指针所在的那个位置的信息。 next方法返回的对象的结构是 {va... 5 年前
  29. 29 ArrayBuffer ArrayBuffer对象、 TypedArray视图和 DataView视图是 JavaScript 操作二进制数据的一个接口。这些对象早就存在,属于独立的规格(2011 年 2 月发布),ES6 将它们纳入了 ... 1 年前
  30. 30 最新提案 本章介绍一些尚未进入标准、但很有希望的最新提案。 do 表达式 本质上,块级作用域是一个语句,将多个操作封装在一起,没有返回值。 { let t = f(); t = t * t + 1; } 上面代码中,... 1 年前
  31. 31 装饰器 [说明] Decorator 提案经历了重大的语法变化,目前处于第三阶段,定案之前不知道是否还有变化。本章现在属于草稿阶段,凡是标注“新语法”的章节,都是基于当前的语法,不过没有详细整理,只是一些原始材料;未标注“... 3 年前
  32. 32 参考链接 官方文件 ECMAScript® 2015 Language Specification: ECMAScript 2015 规格 ECMAScript® 2016 Language Specification: E... 1 年前
  33. 33 鸣谢 Generator 网友 vision57 提出, next()、 throw()、 return()这三个方法本质上是同一件事,可以放在一起理解。它们的作用都是让 Generator 函数恢复执行,并且使用不同的... 6 年前
  34. 34 函数式编程 JavaScript 语言从一诞生,就具有函数式编程的烙印。它将函数作为一种独立的数据类型,与其他数据类型处于完全平等的地位。在 JavaScript 语言中,你可以采用面向对象编程,也可以采用函数式编程。有人甚至... 6 年前
  35. 35 Mixin JavaScript 语言的设计是单一继承,即子类只能继承一个父类,不允许继承多个父类。这种设计保证了对象继承的层次结构是树状的,而不是复杂的网状结构。 但是,这大大降低了编程的灵活性。因为实际开发中,有时不可避免... 6 年前
  36. 36 SIMD 概述 SIMD(发音 /sim-dee/)是“Single Instruction/Multiple Data”的缩写,意为“单指令,多数据”。它是 JavaScript 操作 CPU 对应指令的接口,你可以看做这... 6 年前
  37. 37 Temporal API Temporal 是一个表示时间日期的全新 API,对目前的 Date API 的诸多问题进行修正。 它包含了许多与时间日期相关的工具和方法,都放在 Temporal 对象下面,实际上是一个对象形式的命名空间。 T... 1 个月前