이야기가 시작됩니다: 잊혀진 비밀의 문제 대규모 마법 프로젝트에 자주 참여했던 데브라는 현명한 늙은 마법사가 있었습니다. 그에게는 공통적인 문제가 있었습니다. 맵이나 세트에 개체를 저장할 때마다 해당 개체는 파티를 떠나지 않는 손님처럼 영원히 남아 있었습니다. 더 이상 필요하지 않더라도 남아 왕국의 귀중한 기억을 차지했습니다.
개발자는WeakMap과 WeakSet의 등장
어느 날, 다음과 같은 메시지가 적힌 신비한 두루마리가 도착했습니다.
관심이 생긴 Dev는WeakMap과 WeakSet을 소환했습니다.
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이 앞으로 나아갔습니다:
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는 그들과 함께 작업하면서 이러한 구조가 왜 독특한지 깨달았습니다.
- 자동 정리: WeakMap 및 WeakSet의 개체는 더 이상 다른 곳에서 참조되지 않으면 자동으로 가비지 수집됩니다.
- 크기 없음 속성: 비밀을 가볍고 눈에 띄지 않게 유지하기를 원하기 때문에 크기나 반복자가 없습니다.
- 메모리 효율성: 바람과 같아서 느슨하게 붙잡고 있다가 때가 되면 놓아줍니다.
이야기의 교훈
Dev는 새로운 도구에 매우 만족했습니다. WeakMap과 WeakSet은 메모리를 효율적으로 관리하고 개인 데이터를 안전하게 유지하기 위한 그의 충성스러운 동맹자가 되었습니다. 마법사는 자신들이 항상 옳은 선택은 아니었지만 올바른 상황에서는 그들의 마법이 매우 중요하다는 것을 배웠습니다.
그래서 JavaScript의 땅에서는 비밀이 안전하게 유지되고 메모리가 다시는 낭비되지 않습니다.
위 내용은 JavaScript의 WeakMap 및 WeakSet 이야기: 잊혀진 비밀의 수호자의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!