Symbol & Set & Map
포스트
취소

Symbol & Set & Map

Symbol이란?

  • 새로운 데이터 타입
  • 사용 예시
    const hello = Symbol("test"); //new를 쓰지 않는다.   
    const world = Symbol("test");

    hello === wolrd //출력 : false
    //해석 1 : "test"는 설명일뿐 심볼의 값이 아니다.
    //해석 2 : 단순히 Symbol()을 통해 만들어낸 심볼들은 모두 다른 심볼들이다.

    //같은 심볼을 사용하고 싶으면 Symbol.for()을 사용하면 된다.
    const t1 = Symbol.for("test");
    const t2 = Symbol.for("test");
    t1 === t2 //출력 : true

    //객체의 데이터로도 사용할수 있다.
    const t3 = Symbol.for("test");
    const testObj = {
        t3 : 3,
        [t3] : 7
    };
    testObj.t3  //출력 : 3, 일반적인 객체 접근 방법
    testObj[t3] //출력 : 7, 심볼을 통한 객체 접근 방법
    
  • 사용 이유
    • 기존에 재정의했던 메소드가 어느 순간 업데이트를 통해
      표준 메소드가 되버리면 충돌이 발생할수 있기 때문에

Set이란?

  • 중복되지 않는 유니크한 값을 가지게 해주는 생성자
  • 사용 예시
    const setTest = new Set([1,2,3,4,5,6,7,7,7]);
    setTest //출력 : Set(7) {1, 2, 3, 4, 5, …}

    //요소 추가
    setTest.add(8);
    setTest //데이터 8개 보유

    //요소 보유 확인
    setTest.has(8);//출력 : true

    //요소 삭제
    setTest.delete(8);
    setTest //데이터 7개 보유
    
  • 특징
    • object도 저장할 수 있다.
    • 작은 Database처럼 취급가능하다.

Weak Set이란?

  • object만 저장가능한 Set
  • 사용 예시
    const weakSetTest = new WeakSet();
    weakSetTest.add({hi : 'hi'});
    
  • 특징
    • Set과 다르게 제한된 몇 개의 메소드만 가지고 있다.
    • WeakSet 안의 object를 가리키는 무언가가 없다면 그 object는 garbage collector가 가져간다.

Map이란?

  • key-value 방식을 통한 데이터 저장을 위한 콜렉션
  • 사용 예시
    const map = new Map();  //Map 선언
    map.set("test","ttt");   //값 설정 (key-value)
    map.has("test");        //출력 : true
    map.get("test");        //출력 : ttt
    map.entries();          //출력 : MapIterator {"test" => "ttt"}
    

Weak Map이란?

  • Map에 대해서 WeakSet처럼 사용하는 방식
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.