ES6 新添加的一种集合类型

    Set 很多方面像是 Map 的加强版, 因为他们的API和行为基本是一样的

    • set的创建 const set = new Set()
    • set 创建时的初始化实例 const set = new Set(["val1", "val2"]) , 传入一个可迭代对象, 和 Map 一样 , 或者自定义迭代对象
    • Set的API
      • add () 添加的方法和 Map 不同, Map 使用 set() , 使用 add 返回的是 Set 实例
      • has
      • delete : 返回一个布尔值
      • clear
      • size
    • set 的值可以是任何类型
    • set 使用 对象 {} 或 其他引用类型的集合 [] , 做值时,添加/修改 对象,数组是可以的,set不会发生改变
    • Set 提供一个 迭代器 (Iterator) , 能通过 Values() 和 keys() 方法取得迭代器 SetIterator
      • 或者使用 set[Symbol.iterator] 获取 Set的迭代器,set[Symbol.iterator] 方法引用了 values() 方法 。
    • Set 可以使用 扩展运算符展开 […set] -> 转为数组
    • 可以使用 forEach循环,传入两个参数,用于重写回到内部的 this 值
    • 循环 set 集合时, 字符串原始值 不会被修改

      • for (let value of set.values()) {value = 'test'}, 不会修改 set 的值
    • set能够修改对象属性。 {} / []