定义:类似于数组的数据结构,成员值都是唯一且没有重复的值
声明:constset=newSet(arr)
入参:具有Iterator接口的数据结构
属性
constructor:构造函数,返回Setsize:返回实例成员总数方法
add():添加值,返回实例delete():删除值,返回布尔值has():检查值,返回布尔值clear():清除所有成员keys():返回以属性值为遍历器的对象values():返回以属性值为遍历器的对象entries():返回以属性值和属性值为遍历器的对象forEach():使用回调函数遍历每个成员应用场景
去重字符串:[...newSet(str)].join()去重数组:[...newSet(arr)]或Array.from(newSet(arr))集合数组声明:consta=newSet(arr1)、constb=newSet(arr2)并集:newSet([...a,...b])交集:newSet([...a].filter(v=b.has(v)))差集:newSet([...a].filter(v=!b.has(v)))映射集合声明:letset=newSet(arr)映射:set=newSet([...set].map(v=v*2))或set=newSet(Array.from(set,v=v*2))重点难点
遍历顺序:插入顺序没有键只有值,可认为键和值两值相等添加多个NaN时,只会存在一个NaN添加相同的对象时,会认为是不同的对象添加值时不会发生类型转换(5!==5)keys()和values()的行为完全一致,entries()返回的遍历器同时包括键和值且两值相等WeakSet
定义:和Set结构类似,成员值只能是对象
声明:constset=newWeakSet(arr)
入参:具有Iterator接口的数据结构
属性
constructor:构造函数,返回WeakSet方法
add():添加值,返回实例delete():删除值,返回布尔值has():检查值,返回布尔值应用场景
储存DOM节点:DOM节点被移除时自动释放此成员,不用担心这些节点从文档移除时会引发内存泄漏临时存放一组对象或存放跟对象绑定的信息:只要这些对象在外部消失,它在WeakSet结构中的引用就会自动消重点难点
成员都是弱引用,垃圾回收机制不考虑WeakSet结构对此成员的引用成员不适合引用,它会随时消失,因此ES6规定WeakSet结构不可遍历其他对象不再引用成员时,垃圾回收机制会自动回收此成员所占用的内存,不考虑此成员是否还存在于WeakSet结构中Map
定义:类似于对象的数据结构,成员键可以是任何类型的值
声明:constset=newMap(arr)
入参:具有Iterator接口且每个成员都是一个双元素数组的数据结构
属性
constructor:构造函数,返回Mapsize:返回实例成员总数方法
get():返回键值对set():添加键值对,返回实例delete():删除键值对,返回布尔值has():检查键值对,返回布尔值clear():清除所有成员keys():返回以键为遍历器的对象values():返回以值为遍历器的对象entries():返回以键和值为遍历器的对象forEach():使用回调函数遍历每个成员重点难点
遍历顺序:插入顺序对同一个键多次赋值,后面的值将覆盖前面的值对同一个对象的引用,被视为一个键对同样值的两个实例,被视为两个键键跟内存地址绑定,只要内存地址不一样就视为两个键添加多个以NaN作为键时,只会存在一个以NaN作为键的值Object结构提供字符串—值的对应,Map结构提供值—值的对应WeakMap
定义:和Map结构类似,成员键只能是对象
声明:constset=newWeakMap(arr)
入参:具有Iterator接口且每个成员都是一个双元素数组的数据结构
属性
constructor:构造函数,返回WeakMap方法
get():返回键值对set():添加键值对,返回实例delete():删除键值对,返回布尔值has():检查键值对,返回布尔值应用场景
储存DOM节点:DOM节点被移除时自动释放此成员键,不用担心这些节点从文档移除时会引发内存泄漏部署私有属性:内部属性是实例的弱引用,删除实例时它们也随之消失,不会造成内存泄漏重点难点
成员键都是弱引用,垃圾回收机制不考虑WeakMap结构对此成员键的引用成员键不适合引用,它会随时消失,因此ES6规定WeakMap结构不可遍历其他对象不再引用成员键时,垃圾回收机制会自动回收此成员所占用的内存,不考虑此成员是否还存在于WeakMap结构中一旦不再需要,成员会自动消失,不用手动删除引用弱引用的只是键而不是值,值依然是正常引用即使在外部消除了成员键的引用,内部的成员值依然存在