定义类

JavaScript 是基于原型的面向对象典范,然而,模拟类的需求一直都在,只是各自有不同的模拟方式与风格,这就造成了不同风格间要互动合作时的不便。 另一方面,虽然基于原型的 JavaScript .........

Promise

无论是 Node.js 或者是浏览器中,JavaScript 的运行流程,多半会是非同步方式,就目前来说,可以使用 setTimeout 来简单地模拟非同步,例如: function asyncFoo.........

深入生成器函数

在〈简介生成器函数〉中看到的生成器函数,都只使用了 yield 而没有 return, 如果定义生成器函数的时候使用了 return 会如何? function* range(start, end) .........

简介生成器函数

在〈for…of 与迭代器〉中曾经看过一个 range 函数的实现,透过迭代器来产生一组值,看来有点复杂,实际上这个需求,在 ES6 中可以透过生成器(Generator)函数来达成: functio.........

箭头函数

在 ES6 之前,使用 function 创建匿名函数是很熟悉的一件事: > var arr = [1, 2, 5, 2, 5, 6, 9]; undefined > arr.filter.........

函数的增强

ES6 中对函数的增强,在之前的文件中多少都有看过了,例如〈增强的数值与字符串〉看过的,函数中可以使用 ... 运算符,用来将多于参数的实参收集在一个数组中: > function some(a,.........

ArrayBuffer

如果要存储一组二进制数据,可以使用 ArrayBuffer,它从 ES6 之后成为标准之一,构造 ArrayBuffer 实例时,必须指定字节长度,例如: let buf = new ArrayBu.........

ECMAScript 6 相等性

在〈弱类型的代价 – WAT!〉中谈过,JavaScript 中的相等性比较,主要有 == 与 ===,为了避免自动类型转换来捣蛋,建议使用 === 进行严格的相等比较。 在〈与众不同的数据类型〉中谈.........

Set 与 Map

Set 与 Map 这类数据结构,在程序设计中经常会使用到,ES6 中正式规范了 Set 与 Map API,虽然还不是完善,然而在某些需求时,确实可以省一些功夫。 首先来看到 Set,它内部的元素不.........

新的 Array API

数组是经常使用的数据结构,在 ES6 中,Array 上新增了一些 API 值得介绍一下。首先是替换 Array 构造函数用的 Array.of: > Array.of(1); [ 1 ] &gt.........

Destructuring、Rest 与 Spread 运算

ES6 支持 Destructuring 的语法,它的概念像是模式比对(Pattern match)(然而不完全是),当你将某个结构拆解并分别指定给变量时,经常出现某种模式时,就可以使用这类语法。例如.........

for...of 与 Iterator

不管你过去是如何顺序遍历字符串内容,在 ES6 看到 for...of 语法可以遍历字符串,应该会觉得很方便: > let name = Justin; undefined > for(l.........