WeakSet

WeakSetSet很像,但是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

results matching ""

    No results matching ""