Set
const set = new Set();
set.add(10);
set.add(11);
set.add(12);
set.add(13);
set.add(10);
set.add({});
const obj = {};
set.add(obj);
set.add([]);
const arr = [];
set.add(arr);
set.delete(10);
set.delete(obj);
console.log(set);
console.log(set.size);
console.log(set.has(12));
set.clear();
console.log(set);
const numberArr = [1, 2, 3, 5, 8, 13, 21, 1];
const arrSet = [...new Set(numberArr)];
console.log(arrSet);
const setKeys = set.keys();
const setValues = set.values();
console.log(setKeys.next());
console.log(setKeys.next().value);
console.log(setKeys.return);
console.log(setKeys.throw);
console.log(setValues);
WeakSet
const weakSet = new WeakSet();
weakSet.add({});
const classSet = new WeakSet();
class Person {
constructor() {
classSet.add(this)
}
studying() {
if (classSet.has(this)) console.log('studying~');
else throw new Error('不能非构造调用!')
}
}
const p = new Person();
p.studying();
Map And WeakMap
const map = new Map();
const obj1 = { name: 'SharkDog' },
obj2 = { name: 'Susu' };
const arr1 = [1],
arr2 = [2];
map.set(obj1, 'obj1');
map.set(obj2, 'objTwo');
map.set(arr1, 'arrOne');
map.set(arr2, 'arrTwo');
console.log(map);
console.log(map.size);
console.log(map.get(obj1));
console.log(map.has(arr1));
console.log(map.delete(arr2));
for (const [key, value] of map) {
console.log(key, value);
}
map.clear();
console.log(map);
console.log(new Map([[obj1, 'obj'], [arr1, 'arr'], [2, 'Two']]));
弱引用:当只有弱引用指向某块内存时GC会回收
强引用:不会被GC忽略从而不会回收(内存泄漏可看前面的文章)