WeakSet
对象允许你将弱保持对象存储在一个集合中。
new WeakSet([iterable]);
WeakSet
对象中.WeakSet
对象是一些对象值的集合, 并且其中的每个对象值都只能出现一次.
它和 Set
对象的区别有两点:
WeakSet
对象中只能存放对象引用, 不能存放值, 而 Set
对象都可以.WeakSet
对象中存储的对象值都是被弱引用的, 如果没有其他的变量或属性引用这个对象值, 则这个对象值会被当成垃圾回收掉. 正因为这样, WeakSet
对象是无法被枚举的, 没有办法拿到它包含的所有元素.WeakSet.length
length
属性的值为 0.WeakSet.prototype
WeakSet
实例的所有继承属性和继承方法都在该对象上.WeakSet
实例所有 WeakSet
实例都继承自 WeakSet.prototype
.
WeakSet.prototype.constructor
WeakSet
本身.WeakSet.prototype.add(value)
WeakSet
对象中添加一个新元素 value
.WeakSet.prototype.clear()
WeakSet
对象中的所有元素.WeakSet.prototype.delete(value)
WeakSet
对象中删除 value
这个元素, 之后 WeakSet.prototype.has(value)
方法便会返回 false
.WeakSet.prototype.has(value)
value
是否存在于这个 WeakSet
中.WeakSet
var ws = new WeakSet();
var obj = {};
var foo = {};
ws.add(window);
ws.add(obj);
ws.has(window); // true
ws.has(foo); // false, 对象 foo 并没有被添加进 ws 中
ws.delete(window); // 从集合中删除 window 对象
ws.has(window); // false, window 对象已经被删除了
ws.clear(); // 清空整个 WeakSet 对象
规范链接 | 规范状态 | 备注 |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) WeakSet |
Standard | 无 |
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | 未实现 bug 792439 | 未实现 | 未实现 | 未实现 |
Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | 未实现 | 未实现 bug 792439 | 未实现 | 未实现 | 未实现 |
chrome://flags 中开启
“启用实验性 JavaScript” 才能使用该特性.