WeakMap pozwala używać obiektów jako kluczy. Nie ma żadnej metody poznania długości mapy. Długość zawsze wynosi 1. Klucz nie może być wartością pierwotną
Słowo ostrożnie związane z używaniem obiektu jako klucza, ponieważ wszystkie obiekty są domyślnie w języku JavaScript, należy utworzyć odniesienie do obiektu i użyć go .
Dzieje się tak, ponieważ gdy tworzymy anonimowe obiekty, są one różne.
if ({} !== {}) { console.log('Objects are singletons') };
// will print "Objects are singletons"
Dlatego w następującym scenariuszu, nie możemy oczekiwać, aby uzyskać wartość
var wm = new WeakMap()
wm.set([1],'testVal');
wm.get([1]); // will be undefined
i następujący fragment będzie działać zgodnie z oczekiwaniami.
var a = [1];
wm.set(a, 'testVal');
wm.get(a); // will return 'testVal'
Wszystkie odpowiedzi są błędne. Jedyną "słabą" w słabej mapie są klucze. To znaczy - jeśli masz klucz-wartość na słabej mapie, w przeciwieństwie do zwykłej "mapy", to nie zapobiegnie to, że zostanie ona zebrana. Jest to użyteczne na przykład do rozszerzania obiektów z zewnątrz bez bałaganu przy zbieraniu śmieci. W szczególności odpowiedź Raynos wyjaśnia, czym jest mapa. –
Powiązane: [Jakie są rzeczywiste zastosowania ESak WeakMap?] (Http://stackoverflow.com/q/29413222/1114) –
** Ostrzeżenie: obie odpowiedzi tutaj są niepoprawne **. Zobacz post połączony z komentarzem powyżej, aby uzyskać sensowne odpowiedzi. –