> 웹 프론트엔드 > JS 튜토리얼 > JavaScript의 WeakMap 및 WeakSet 이야기: 잊혀진 비밀의 수호자

JavaScript의 WeakMap 및 WeakSet 이야기: 잊혀진 비밀의 수호자

Susan Sarandon
풀어 주다: 2024-12-01 02:54:09
원래의
876명이 탐색했습니다.
A Tale of WeakMap and WeakSet in JavaScript: The Guardians of Forgotten Secrets

이야기가 시작됩니다: 잊혀진 비밀의 문제 대규모 마법 프로젝트에 자주 참여했던 데브라는 현명한 늙은 마법사가 있었습니다. 그에게는 공통적인 문제가 있었습니다. 맵이나 세트에 개체를 저장할 때마다 해당 개체는 파티를 떠나지 않는 손님처럼 영원히 남아 있었습니다. 더 이상 필요하지 않더라도 남아 왕국의 귀중한 기억을 차지했습니다.

개발자는
“직접 정리할 걱정 없이 비밀을 임시로 보관할 수 있는 방법이 있다면 어떨까?”라고 생각했습니다.

WeakMap과 WeakSet의 등장

어느 날, 다음과 같은 메시지가 적힌 신비한 두루마리가 도착했습니다.


WeakMapWeakSet

을 사용하여 잊어버린 비밀을 처리하세요. 더 이상 필요하지 않으면 사라질 것입니다.”

관심이 생긴 Dev는

WeakMapWeakSet을 소환했습니다.

WeakMap: 개인 키의 보관자 WeakMap이 소개되었습니다:


“키-값 쌍을 보유하고 있지만 키는 객체여야 합니다. 열쇠가 사라지면 걱정할 필요 없이 쌍을 지워드리겠습니다.”

개발자가 테스트한 내용:

WeakMap 설명:

“저는 사용자 세션 추적이나 결과 캐싱 등 개체에 대한 비공개 메타데이터를 저장하는 데 적합합니다.”


let key = { id: 1 }; // The magical key
let weakMap = new WeakMap();

weakMap.set(key, "This is a secret"); // Storing a secret

console.log(weakMap.get(key)); // Output: This is a secret

// If the key is forgotten:
key = null;

// The secret vanishes from WeakMap, cleaned by the garbage collector
로그인 후 복사

WeakSet: 침묵의 감시자

WeakSet이 앞으로 나아갔습니다:


“물건도 보관하는데 물건만 보관해요. 개체가 사라지면 내 세트의 구성원도 사라집니다.”

Dev가 시도해보기로 결정했습니다.

WeakSet 계속:

“저는 DOM 요소의 변경 사항을 관찰하는 것처럼 일시적으로 존재해야 하는 객체를 추적하는 데 이상적입니다.”


let obj = { name: "Mystical Object" };
let weakSet = new WeakSet();

weakSet.add(obj); // Adding the object to the WeakSet

console.log(weakSet.has(obj)); // Output: true

// If the object is forgotten:
obj = null;

// The object is automatically removed from WeakSet
로그인 후 복사

WeakMap과 WeakSet이 특별한 이유

Dev는 그들과 함께 작업하면서 이러한 구조가 왜 독특한지 깨달았습니다.

  1. 자동 정리: WeakMap 및 WeakSet의 개체는 더 이상 다른 곳에서 참조되지 않으면 자동으로 가비지 수집됩니다.
  2. 크기 없음 속성: 비밀을 가볍고 눈에 띄지 않게 유지하기를 원하기 때문에 크기나 반복자가 없습니다.
  3. 메모리 효율성: 바람과 같아서 느슨하게 붙잡고 있다가 때가 되면 놓아줍니다.

이야기의 교훈

Dev는 새로운 도구에 매우 만족했습니다. WeakMap과 WeakSet은 메모리를 효율적으로 관리하고 개인 데이터를 안전하게 유지하기 위한 그의 충성스러운 동맹자가 되었습니다. 마법사는 자신들이 항상 옳은 선택은 아니었지만 올바른 상황에서는 그들의 마법이 매우 중요하다는 것을 배웠습니다.

그래서 JavaScript의 땅에서는 비밀이 안전하게 유지되고 메모리가 다시는 낭비되지 않습니다.

위 내용은 JavaScript의 WeakMap 및 WeakSet 이야기: 잊혀진 비밀의 수호자의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿