JavaScript

[ES6 JavaScript] WeakSet

코딩하는 Jay 2020. 10. 15. 16:54
반응형

 오늘은 WeakSet에 대해서 알아보도록 하겠습니다. WeakSet은 WeakMap처럼 약하게 유지되는 객체를 컬렉션에 저장할 수 있게 해주는 객체입니다. 약하게 유지된다는 것은 WeakSet 내 저장된 객체에 다른 참조가 없는 경우, GC(Garbage Collection) 될 수 있다는 의미입니다. 그리고 또 다른 특징은 WeakSet내의 객체는 오직 한 번만 발생할 수 있습니다. 즉, WeakSet 컬렉션 내 요소는 유일한 요소입니다. WeakSet에서 사용할 수 있는 메서드는 총 3가지 입니다.

 

WeakSet.prototype.add(value) WeakSet 객체에 새로운 객체를 추가하는 메서드

WeakSet.prototype.delete(value) WeakSet 객체에 요소를 제거하는 메서드

WeakSet.prototype.has(value) WeakSet 객체 내 주어진 값을 갖는 요소가 존재하는지 확인하는 메서드

 

Pixabay로부터 입수된 StockSnap님의 이미지 입니다.  

 

 그럼 예제를 보면서 WeakSet대해 알아보도록 하겠습니다.

var ws = new WeakSet();
var obj = {};
var foo = {};

ws.add(window);
ws.add(obj);

ws.has(window); // true
ws.has(foo);    // false, foo가 집합에 추가되지 않았음

ws.delete(window); // 집합에서 window 제거함
ws.has(window);    // false, window가 제거되었음

 ws라는 이름으로 WeakSet 객체를 하나 생성하고 메서드를 사용해보았습니다. 먼저, add를 통해 window 객체와 obj 객체를 넣고 has 메서드를 통해 window와 foo 객체가 있는지 확인했습니다. window는 존재하여 true를 반환하고 foo는 존재하지 않아 false가 반환되었습니다. 그후 window를 ws 객체에서 제거하고 has로 확인하니 false가 반환되는 것을 확인했습니다.

반응형

'JavaScript' 카테고리의 다른 글

[JavaScript] Function.prototype.call/apply/bind  (0) 2021.01.20
div height 100% 높이 구하기  (0) 2021.01.11
[ES6 JavaScript] WeakMap  (0) 2020.10.13
[ES6 JavaScript] Set  (0) 2020.10.11
[ES 6 JavaScript] Map  (0) 2020.10.10