在 ES6 之前创建数组主要存在两种方式: `Array` 构造器与数组字面量写法。这两种方式都需要将数组的项分别列出,并且还要受到其他限制。将“类数组对象”(即:拥有数值类型索引与长度属性的对象) 转换为数组也并不自由,经常需要书写额外的代码。为了使数组更易创建,ES6 新增了` Array.of()` 与 `Array.from()` 方法。
迭代器是被设计专用于迭代的对象,带有特定接口。所有的迭代器对象都拥有 next() 方法,会返回一个结果对象。该结果对象有两个属性:对应下一个值的 value ,以及一个布尔类型的 done ,其值为 true 时表示没有更多值可供使用。迭代器持有一个指向集合位置的内部指针,每当调用了 next() 方法,迭代器就会返回相应的下一个值。
ES6中提供了Set、Map数据容器,Set是无重复值的有序列表。根据 `Object.is() `方法来判断其中的值不相等,以保证无重复。 Set 会自动移除重复的值,因此你可以使用它来过滤数组中的重复值并返回结果。 Set并不是数组的子类型,所以你无法随机访问其中的值。但你可以使用` has()` 方法来判断某个值是否存在于 Set 中,或通过 `size` 属性来查看其中有多少个值。 Set 类型还拥有`forEach() `方法,用于处理每个值。
在 JS 已有的基本类型(字符串、数值、布尔类型、 `null` 与 `undefined` ) 之外, ES6 引入了一种新的基本类型:符号(`Symbol` ) 。 符号起初被设计用于创建对象私有成员,而这也是 JS 开发者期待已久的特性。在符号诞生之前,将字符串作为属性名称导致属性可以被轻易访问,无论命名规则如何。而“私有名称”意味着开发者可以创建非字符串类型的属性名称,由此可以防止使用常规手段来探查这些名称。