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 라이센스를 따릅니다.