반응형

 

WeakSet 에 객체를 저장할 수 있다. 

WeakSet 은 Set 과 다르게 참조를 가지고 있는 객체만 저장이 가능하다. 

객체 형태를 중복없이 저장하고자할 때 유용하게 활용할 수 있다.

let arr = [1, 2, 3, 4];
let arr2 = [5, 6, 7, 8];
let obj = [arr, arr2];

let ws = new WeakSet();

ws.add(arr);
ws.add(arr2);
ws.add(obj);

console.log(ws);

콘솔창에 아래와 같이 출력된다.

 

 

만약 위 코드를 아래와 같이 arr, arr2 를 null 로 변경하면,

let arr = [1, 2, 3, 4];
let arr2 = [5, 6, 7, 8];
let obj = [arr, arr2];

let ws = new WeakSet();

ws.add(arr);
ws.add(arr2);
ws.add(obj);

arr = null;
arr2 = null;

console.log(ws);

console.log(ws.has(arr), ws.has(arr2));

콘솔창에는 당연히 false 가 출력된다.

 

배열(Array) 를 개선한 게 Set 과 WeakSet, 객체(Object) 를 개선한 것이 Map 과 WeakMap 이라고 생각하면 간단하다.

 

Map 은 알다시피, key 와 value 로 구성되어 있는데, 객체를 key 값에 저장한다고 보면 된다.

 

let wm = new WeakMap();
let func = function(){};

wm.set(func, 0);

let cnt = 0;
for(let i=0; i<10 ; i++) {
  cnt = wm.get(func);
  cnt++;
  wm.set(func, cnt);
}

console.log(wm.get(func));	// 10
func = null;
console.log(wm.has(func));	// false

 

* 출처 :  '코어 자바스크립트 - 핵심 개념과 동작 원리로 이해하는 자바스크립트 프로그래밍', 정재남 지음

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기