위크셋
은 셋
과 유사한데, 객체만 저장 가능
원시값은 저장 불가능
셋
안의 객체는 도달 가능할 때만 메모리에서 유지
셋
과 마찬가지로 위크셋
이 지원하는 메서드는 단출
add
, has
, delete
사용 가능
size
, keys()
나 반복 작업 관련 메서드는 사용 불가능
let visitedSet = new WeakSet();
let john = { name: "John" };
let pete = { name: "Pete" };
let mary = { name: "Mary" };
visitedSet.add(john); // John이 사이트를 방문
visitedSet.add(pete); // 이어서 Pete가 사이트를 방문
visitedSet.add(john); // 이어서 John이 다시 사이트를 방문
// visitedSet엔 두 명의 사용자가 저장
// John의 방문 여부를 확인
alert(visitedSet.has(john)); // true
// Mary의 방문 여부를 확인
alert(visitedSet.has(mary)); // false
john = null;
// visitedSet에서 john을 나타내는 객체 자동 삭제