一、WeakSet对象是一组对象的集合。WeakSet中的对象不重复且不可枚举。
1、WeakSet是类似于Set的集合,它仅存储对象,并且一旦通过其他方式无法访问它们,便会将其删除。
二、WeakSet的表现
- 与Set类似,但是我们只能向WeakSet添加对象(而不能是原始值)。
- 对象只有在其它某个(些)地方能被访问的时候,才能留在 set 中。
- 跟Set一样,WeakSet支持add,has和delete方法,但不支持size和keys(),并且不可迭代。
三、变“弱(weak)”的同时,它也可以作为额外的存储空间。但并非针对任意数据,而是针对“是/否”的事实。WeakSet的元素可能代表着有关该对象的某些信息。
【示例1】我们可以将用户添加到WeakSet中,以追踪访问过我们网站的用户:
let visitedSet = new WeakSet();let john = { name: "John" };let pete = { name: "Pete" };let mary = { name: "Mary" };visitedSet.add(john); // John 访问了我们visitedSet.add(pete); // 然后是 PetevisitedSet.add(john); // John 再次访问// visitedSet 现在有两个用户了// 检查 John 是否来访过?alert(visitedSet.has(john)); // true// 检查 Mary 是否来访过?alert(visitedSet.has(mary)); // falsejohn = null;// visitedSet 将被自动清理
使用案例
一、WeakSet的用例很有限,比如使用DOM元素作为键来追踪它们而不必担心内存泄漏。
