상세 컨텐츠

본문 제목

Map 과 WeakMap - Javascript ES6

Programming/Concept

by 쌩우 2019. 4. 19. 14:14

본문

Map과 WeakMap은 Set과는 차이점이 있다.

  • key와 value 구조

  • 특정 객체의 부연 설명을 할 때 사용 가능

  • key에 적용한 객체에 null 할당 시 가비지 컬렉션으로 간주

WeakMap

  • WeakMap의 key는 오직 Object type만! Primitive type은 허용되지 않는다.(Symbol도 WeakMap key가 될 수 없다)

  • 객체 정보만 넣을수 있다.

  • private 변수 만들기. 객체가 필요없어질 때에는 가비지컬렉션 대상이 됨.

  • Set 사용으로 모자라면 map을 사용

함수의 호출 횟수를 세는 WeakMap 활용을 해 보자.

let weakMap = new WeakMap();
let myFun = function(){};
//myFun 함수가 몇 번 실행 되었는지를 세 볼 것이다.

weakMap.set(myFun, 0);
//myFun을 key로 하고, value는 0인 값을 생성

let count = 0;
for(let i = 0; i<10; i++){
  count = weakMap.get(myFun); //getting value here
  count++;
  weakMap.set(myFun, count)
}

//이 후에, 객체 값을 null 처리하게 되면, 가비지 컬렉션 대상이 될 것임

myFun = null;
console.log(weakMap.has(myFun))  //  false

관련글 더보기

댓글 영역