>웹 프론트엔드 >JS 튜토리얼 >ES6의 새로운 WeakSet 데이터 구조에 대한 자세한 소개

ES6의 새로운 WeakSet 데이터 구조에 대한 자세한 소개

巴扎黑
巴扎黑원래의
2017-08-11 11:05:591392검색

WeakSet은 반복되지 않는 요소가 있는 컬렉션이기도 합니다. 차이점은 WeakSet의 요소는 객체여야 하며 다른 유형이 될 수 없다는 것입니다. 다음으로, 이번 글에서는 ES6의 새로운 데이터 구조인 WeakSet의 사용법을 자세히 소개하겠습니다. 관심 있는 친구들은 함께 살펴보세요

WeakSet은 Set과 유사하며, 반복되지 않는 요소가 있다는 차이점도 있습니다. 그 사이에는 WeakSet의 요소가 Object여야 하며 다른 유형이 될 수 없다는 것이 있습니다.

특징:

1. 요소는 객체여야 합니다.

번호 유형의 요소를 추가하세요.


const ws = new WeakSet()
ws.add(1)

결과는 유형 오류입니다.

TypeError: 약한 집합에 잘못된 값이 사용되었습니다.

객체를 추가하세요.


const ws = new WeakSet()
var a = {p1:'1', p2:'2'}
ws.add(a)
console.log(ws.has(a));

추가하면 결과는 다음과 같습니다.

true

WeakSet의 has 메소드를 사용하여 요소가 이미 세트에 있는지 확인할 수 있습니다.

요소를 저장할 필요가 없으면 삭제 메소드를 사용하여 요소를 삭제할 수 있습니다.

2. WeakSet에 추가된 요소 객체의 경우 WeakSet은 가비지 컬렉션에 포함되지 않습니다. WeakSet에 추가된 요소 객체의 경우 요소 객체가 WeakSet 이외의 다른 개체에서 참조되지 않으면 가비지 수집에 의해 해제됩니다. WeakSet의 요소 개체는 메모리 누수 없이 자동으로 해제됩니다.

이 기능으로 인해 맵보다 성능이 높으며 비순차적, 비반복적, 임시 저장이 필요한 시나리오에 사용할 수 있습니다.

const ws = new WeakSet()
var a = {p1:'1', p2:'2'}
ws.add(a)
a = null
console.log(ws.has(a));

먼저 WeakSet에 객체를 추가한 후 객체를 null로 설정하고, 아래의 has 메소드를 판단하면 해당 객체가 WeakSet에 더 이상 존재하지 않는다는 결과가 표시됩니다.

false

3. 순회할 수 없습니다

내부 요소 개체에 대한 참조가 약하고 언제든지 가비지 수집에 의해 해제되므로 size 및 forEach와 같은 순회 방법을 지원하지 않습니다.

위 내용은 ES6의 새로운 WeakSet 데이터 구조에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.