반응형
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
* 출처 : '코어 자바스크립트 - 핵심 개념과 동작 원리로 이해하는 자바스크립트 프로그래밍', 정재남 지음
반응형
'Front-End > JavaScript' 카테고리의 다른 글
jqGrid 선택한 행 삭제하는 방법 (0) | 2021.06.17 |
---|---|
[JavaScript] 자바스크립트에서 table 내용 엑셀 다운로드 (2) | 2020.06.18 |
[JavaScript] 프로토타입(prototype)_2편 (0) | 2020.05.24 |
[JavaScript] 프로토타입(prototype)_1편 (0) | 2020.05.06 |
[JavaScript] 클로저 (Closure) (0) | 2020.04.10 |
최근댓글