//
// set과의 차이는?
// 참조를 가지고 있는 객체만 저장이 가능하다.
let arr = [1,2,3,4];
let ws = new WeakSet();
ws.add(arr);
// ws.add(111); // invalid type
// ws.add("111"); // invalid type
// ws.add(null); // invalid type
// ws.add(function(){}) //유효함
console.log(ws);
//만약 객체가 널이되거나 필요가 없어지면 가비지 컬렉션 대상이 됩니다. 위크셋에서도 없어진다. 참조를 모니터링 한다고 봐야함.
let array1 = [1,2,3,4];
let array2 = [5,6,7,8];
let obj = [arr, arr2];
let weakset = new WeakSet();
weakset.add(array1);
weakset.add(array2);
weakset.add(obj);
array1 = null;
array2 = null;
console.log(weakset);
console.log(ws.has(array1), ws.has(array2));
// 참조를 잃으면 없다고 표출함.
// 위크셋에 객체형태를 중복되지 않고 보관하겠다. 자료구조를 다룰때 유용함.
// 컨스트럭터 프로토 타입안에 메소드를 밖에서 직접 부르는걸 방지할때 쓴다든지?
'Javascript' 카테고리의 다른 글
| [ES6] WeakMap (0) | 2019.03.27 |
|---|