JavaScript WeakMap 및 WeakSet
위크맵
이전 글에서는 프리미티브 값을 키로 사용했습니다. 객체가 키이기 때문에
weakMap에서는 다릅니다.아래 예를 참조하십시오.
const weakMap = new WeakMap();
const obj = {};
const str = '';
weakMap.set(obj, "ok"); // WeakMap { <items unknown> }
weakMap.set(str, "ok"); // only use non-primitive data as key
// TypeError: Invalid value used as weak map key
개체에 대한 참조가 없으면 자동으로 메모리에서 제거됩니다.
아래 예를 참조하십시오.
let bello = { name: "Bello" };
const weakMap = new WeakMap();
weakMap.set(bello, 'noah');
bello = null; // changed/overriden reference
// bello is removed from memory!
WeakMapdoes not support iteration methods likekeys(),values(),entries().
다음 방법은 여전히
WeakMap 에서 작동합니다.weakMap.get(key) weakMap.set(key, value) weakMap.delete(key) weakMap.has(key) WeakMap에서 지원되지 않는 iterable 메서드의 이면에 있는 이유는 JavaScript 엔진 메모리 정리(전체 또는 부분 정리)가 추가 삭제가 발생할 때 즉시 또는 나중에 수행될 수 있기 때문입니다.위크셋
기본적으로 사이트를 방문한 사람들을 추적하는 것과 같이 개체의 예/아니오 또는 참/거짓 사실의 추가 저장소로 사용됩니다.
Mostly only objects are added to
WeakSet.
add has 및 delete 입니다. size 및 keys() 을 지원하지 않습니다. weakMap과 마찬가지로 반복 방법은 지원되지 않으며 모든 현재 콘텐츠를 가져오는 기능도 부족합니다. 아래 예를 참조하십시오.
const visitedSet = new WeakSet();
let bello = { name: "Bello" };
const monica = { name: "Monica" };
const jennifer = { name: "Jennifer" };
visitedSet.add(bello); // Bello visited site
visitedSet.add(monica); // Monica visited site
visitedSet.add(bello); // Bello again visited site
// visitedSet has 2 users now
// check if Bello visited the site?
console.log( visitedSet.has(bello) ); // true
// check if Jennifer visited the site
console.log( visitedSet.has(jennifer) ); // false
bello = null; // visitedSet will be cleaned automatically
Reference
이 문제에 관하여(JavaScript WeakMap 및 WeakSet), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bello/javascript-weakmap-and-weakset-92a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)