Próbuję powiązać pewne "prywatne" dane z elementami DOM. Zamiast dodawać te dane do samego elementu DOM (chciałbym uniknąć zmiany elementu DOM), mam oddzielny obiekt danych, który chcę użyć jako mapy.Używanie elementów DOM jako kluczy do mapy javascript
Zamiast:
document.GetElementById('someElementId').privateData = {};
chcę zrobić
internalPrivateDataMap[document.GetElementById('someElementId')].privateData = {};
Nie wszystkie elementy mają pole id, a niektóre są tworzone dynamicznie, więc nie można używać jako identyfikator klawisz.
Działa to dobrze dla większości elementów, ale dla elementów "a", klucz, który jest używany, wydaje się być href elementu, myślę, ponieważ DOM definiuje funkcję toString() dla elementów.
Wynikiem tego jest to, że jeśli mam dwa elementy "a" z tym samym href, to udostępniają one dane prywatne, których nie chcę.
Moje bieżące obejście polega na wygenerowaniu wewnętrznego unikalnego identyfikatora, którego mogę użyć jako klucza, ale to wymaga modyfikacji elementu DOM, którego próbuję uniknąć.
Jakie jest twoje pytanie? – Madbreaks
* "To działa dobrze dla większości elementów" * Tak jest? Myślę, że w ten sposób otrzymasz ogólny klucz '[object HTMLDivElement]'. ... ale tak, kotwica da jej 'href' jako wartość' .toString() '. –
Musisz poczekać na * ES.Następny *. * WeakMaps * pozwoli na to. – jAndy