--- title: WeakSet slug: Web/JavaScript/Reference/Global_Objects/WeakSet tags: - ECMAScript 2015 - JavaScript - Reference - WeakSet translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet ---
WeakSet
객체는 약하게 유지되는(held, 잡아두는) 객체를 컬렉션에 저장할 수 있습니다.
new WeakSet([iterable]);
iterable
WeakSet
에 추가됩니다. null은 undefined로 취급됩니다.WeakSet
객체는 객체 컬렉션입니다. WeakSet
내 객체는 오직 한 번만 발생할 수 있습니다. 즉, WeakSet
컬렉션 내에서 유일합니다.
{{jsxref("Set")}} 객체와 주된 차이는 다음과 같습니다:
Set
과 달리, WeakSet
은 객체 만의 컬렉션이며 모든 유형의 임의 값(의 컬렉션)은 아닙니다.WeakSet
은 약합니다(weak): 컬렉션 내 객체 참조는 약하게 유지됩니다. WeakSet
내 저장된 객체에 다른 참조가 없는 경우, 쓰레기 수집(garbage collection)될 수 있습니다. 이는 또한 컬렉션 내 현재 저장된 객체 목록이 없음을 뜻합니다. WeakSets
은 열거불가입니다.WeakSet.length
length
속성값은 0.Set
생성자에 대한 프로토타입을 나타냅니다. 모든 WeakSet
객체에 속성을 추가할 수 있습니다.WeakSet
인스턴스모든 WeakSet
인스턴스는 {{jsxref("WeakSet.prototype")}}에서 상속합니다.
{{page('ko/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype','속성')}}
{{page('ko/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype','메서드')}}
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가 제거되었음
명세 | 상태 | 설명 |
---|---|---|
{{SpecName('ES2015', '#sec-weakset-objects', 'WeakSet')}} | {{Spec2('ES2015')}} | 초기 정의. |
{{SpecName('ESDraft', '#sec-weakset-objects', 'WeakSet')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.WeakSet")}}