podstawie mojego zrozumienia docs (here i here) należałoby odwołanie do adresu pamięci do jego pracy:Jak podkładki ES6 Mapa pracować
const foo = {};
const map = new Map();
map.set(foo,'123'); // Can only be done if memory address of `foo` is known. Any other shimming would require stringification of foo
To dlatego obiekt JavaScript {}
klucze mogą być tylko ciągami (przynajmniej w ES5).
Mimo to widzę Map
shim dostępne: https://github.com/zloirock/core-js#map. Próbowałem czytać źródła, ale jego zbyt zgrabnie wydobywane (internally wykorzystuje strong collection which then imports 10 more files)
Pytanie
odpowiedzieć na każde z poniższych proszę
- Czy istnieje prosty trik do niego i może naprawdę nawet być zrobione (bez uszeregowania)?
- Być może mutuje
foo
, aby zapisać na nim jakiś ciąg, a następnie używa go jako klucza? - Coś jeszcze i może czytam dokumentację źle?
Jestem prawie pewna, że podkładki używają '===' do porównywania tożsamości obiektu, i dlatego mają wiele operacji O (N) zamiast operacji O (1) lub O (log (N)), które natywne implementacje mogły mieć. –
ES2015 "Mapa" nie może być prawidłowo nałożona, uważam, że najbliższą impaktacją byłoby przechowywanie zapisów kluczy, pewnego rodzaju iteracji i regularnego porównywania z obiektami, jak również wspomina Jeremy. – adeneo
[Tutaj jest] (https://cloud.github.com/downloads/eriwen/es6-map-shim/es6-map-shim-0.2.js) czytelne polyfill btw – adeneo