👋 WeakSet 오브젝트 개요, new WeakSet(), has(), add(), delete()


1. WeakSet 오브젝트

  • Set 오브젝트와 차이

    • 오브젝트만 value 값으로 사용할 수 있음
    • number 등의 프리미티브 타입 사용 불가
  • 개념은 WeakMap과 같음

    • value만 작성하는 것이 다름
    • value의 참조가 바뀌면 GC 대상
  • 지원 메소드

    • has(), add(), delete()

2. new WeakSet()

  • WeakSet 인스턴스 생성, 반환
  • 파라미터

    • 대괄호 [ ] 안에 오브젝트 작성
    const empty = new WeakSet();
    const sports = {};
    const obj = new WeakSet([
    	sports
    ]};
    
    // 1. 파라미터를 작성하지 않아도 됨
    // 2. new 연산자를 사용 함

3. has()

  • WeakSet 인스턴스에서 value의 존재 여부 반환

    • 존재하면 true, 아니면 false 반환
    const fn = () => {};
    const obj = new WeakSet([
    	fn
    ]};
    
    console.log(obj.has(fn));   // true

4. add()

  • WeakSet 인스턴스에 value 설정

    • 파라미터에 value 로 설정될 오브젝트 작성
    const obj = new WeakSet();
    const fn = () => {};
    obj.add(fn);
    
    console.log(obj.has(fn)); // true

5. delete()

  • WeakSet 인스턴스에서 value와 일치하는 엘리먼트 삭제

    • 삭제 성공이면 true 반환
    • 삭제를 실패하면 false 반환
    const fn = () => {};
    const obj = new WeakSet([fn]);
    
    console.log(obj.delete(fn)); // true
    console.log(obj.has(fn)); // false