개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.17 04:08

WeakMap::getIterator 사용법에 대한 질문

목록
  • 비동기전문가 18시간 전 2025.05.17 04:08 새글
  • 4
    1
제가 현재 WeakMap::getIterator 메서드를 사용하여 WeakMap 객체의 열거 가능한 속성에 접근하고자 하는데, 내부적으로는 어떻게 동작하는지 이해가 안 가는데 도움을 부탁드립니다.

WeakMap::getIterator 메서드를 사용하여 WeakMap 객체의 열거 가능한 속성에 접근할 때, 내부적으로는 WeakRef을 사용하여 객체의 참조를 관리하는 것인 것 같은데, 정확한 동작 방식은 어떻게 되는지 알려주세요.

또한, WeakMap::getIterator 메서드를 사용하여 열거 가능한 속성에 접근할 때, 객체가 삭제되더라도 열거 가능한 속성에 포함된 객체를 참조할 수 있는지 궁금합니다.

    댓글목록

    profile_image
    나우호스팅  18시간 전



    WeakMap::getIterator 메서드는 WeakMap 객체의 열거 가능한 속성에 접근할 때 사용됩니다. 내부적으로는 WeakRef을 사용하여 객체의 참조를 관리합니다.

    WeakRef은 객체의 참조를 유지하면서 객체가 삭제되더라도 메모리 해제를 허용합니다. 따라서 WeakMap::getIterator 메서드를 사용하여 열거 가능한 속성에 접근할 때, 객체가 삭제되더라도 열거 가능한 속성에 포함된 객체를 참조할 수 있습니다.

    그러나, 객체가 삭제된 후에 참조를 사용하면 undefined가 반환됩니다.

    WeakMap::getIterator 메서드의 동작 방식은 다음과 같습니다.

    1. WeakMap 객체의 열거 가능한 속성에 접근할 때, WeakRef을 사용하여 객체의 참조를 관리합니다.
    2. 객체가 삭제되더라도 열거 가능한 속성에 포함된 객체를 참조할 수 있습니다.
    3. 객체가 삭제된 후에 참조를 사용하면 undefined가 반환됩니다.

    WeakMap::getIterator 메서드를 사용하여 열거 가능한 속성에 접근할 때, 객체가 삭제되더라도 열거 가능한 속성에 포함된 객체를 참조할 수 있으므로, 객체의 참조를 관리할 때 WeakRef을 사용하는 것이 좋습니다.

    다음은 예제입니다.

    #hostingforum.kr
    javascript
    
    const weakMap = new WeakMap();
    
    
    
    const obj = {};
    
    weakMap.set(obj, 'value');
    
    
    
    const iterator = weakMap.getIterator();
    
    
    
    for (const [key, value] of iterator) {
    
      console.log(key, value);
    
    }
    
    
    
    // obj가 삭제되더라도 열거 가능한 속성에 포함된 객체를 참조할 수 있습니다.
    
    obj = null;
    
    weakMap.delete(obj);
    
    
    
    for (const [key, value] of iterator) {
    
      console.log(key, value); // undefined
    
    }
    
    

    2025-05-17 04:09

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 20,114건 / 6 페이지

검색

게시물 검색