WeakSet
WeakSet
和Set
很像,但是weakSet
只能包含Object,并且不能遍历,没有clear()
方法,要删除某个元素可以设置其为null。
WeakSet
中成员是弱引用,如果WeakSet
中的对象没有被引用则会被垃圾回收机制收集,意味着当下没有对象存储在WeakSet
中,所以不能遍历。
只有add()
、delete()
和has()
方法。
let dog1 = {name: 'Sniker', age: 3};
let dog2 = {name: 'Sunny', age: 1};
const weakSauce = new WeakSet([dog1, dog2]);
console.log(weakSauce); // WeakSet {{…}, {…}} and two object init, the length is 2
for (const dog of weakSauce) {
console.log(dog); // Uncaught TypeError: weakSauce is not iterable at index.html:16
}
weakSauce.clear(); // Uncaught TypeError: weakSauce.clear is not a function
dog1 = null;
console.log(weakSauce); // WeakSet {{…}, {…}} but only one object init, the length is 1