2016-06-02 3 views
1

지도에서 객체를 키로 사용한 적이 몇 번 있었지만 특정 객체에 대한 메타 데이터를 저장하는 데 사용한 적이있었습니다. 필자는 항상 WeakMap을 사용했습니다. 그 이유는 키로 사용했던 개체가 가비지 수집 될 때지도의 항목이 자동으로 가비지 수집되는 이점이 있기 때문입니다.오브젝트를 키로 사용하는 경우 약점 맵을 언제 사용합니까?

메타 데이터를 저장하는 것이지도에서 키와 같은 개체를 생각할 수있는 유일한 사용 사례입니다. 그러나 키와 같이 개체의 다른 사용 사례가있는 경우 궁금합니다.이 경우 평범한 Map을 사용하십시오. WeakMap 이상

+0

가능한 중복 [ES6지도 WeakMap의 차이점은 무엇입니까? (http://stackoverflow.com/q/15604168/1048572) 또는 [ES6 WeakMap의 실제 용도는 무엇입니까? ] (http://stackoverflow.com/q/29413222/1048572) – Bergi

+0

@Bergi지도와 WeakMap의 차이를 알고 있기 때문에 이것이 중복 된 것으로 생각하지 않습니다. 질문에 WeakMap을 사용한다고 말합니다. 그 자체. WeakMap을 통해 맵핑을 사용하는 경우를 알면 더 많은 정보를 얻을 수 있습니다. 맵핑 오버 맵만큼 맵핑되지 않습니다. – m0meni

+1

WeakMaps의 제한 사항을 살펴보십시오. 그것들은 반복 할 수 없습니다. 예를 들어 필요하다면'Map'을 원할 것입니다. – Bergi

답변

1

그래프를 모델링하기위한 구현을 고려하십시오. 그래프의 노드가 사용자 정의 된 객체라고 가정합니다. 그래프 구현에서는 이러한 노드를 저장해야하지만 다른 데이터 (예 : 인접성 "사전"을 생각하는)와 연결해야합니다. 우리는 모든 노드를 반복 할 수 있어야하므로 Map이 필요합니다. (예 : networkx.github.io가 파이썬에서 무엇을하는지, JS 포트를 사용하는지)

그리고 우리가 노드를 반복 할 필요가 있다면, 다른 참조가 없으면 가비지 수집을 원하지 않을 것입니다. 그러면 그래프가 자동으로 삭제됩니다.

-의 펠릭스 클링