पर कुंजी के रूप में DOM तत्वों का उपयोग करना मैं कुछ "निजी" डेटा को DOM तत्वों से संबद्ध करने का प्रयास कर रहा हूं। उस डेटा को डीओएम तत्व में जोड़ने के बजाय (मैं डीओएम तत्व को बदलने से बचना चाहता हूं), मेरे पास एक अलग डेटा ऑब्जेक्ट है जिसे मैं मानचित्र के रूप में उपयोग करना चाहता हूं।जावास्क्रिप्ट मानचित्र
बजाय:
document.GetElementById('someElementId').privateData = {};
मैं
internalPrivateDataMap[document.GetElementById('someElementId')].privateData = {};
नहीं सभी तत्वों एक आईडी क्षेत्र है क्या करना चाहते हैं, और कुछ डायनामिक रूप से तैयार कर रहे हैं, तो मैं के रूप में आईडी का उपयोग नहीं कर सकते कुंजी।
यह अधिकांश तत्वों के लिए ठीक काम करता है, लेकिन "ए" तत्वों के लिए, उपयोग की जाने वाली कुंजी तत्व का href प्रतीत होता है, मुझे लगता है क्योंकि DOM तत्वों के लिए एक toString() फ़ंक्शन को परिभाषित करता है।
इसका नतीजा यह है कि यदि मेरे पास एक ही href के साथ दो "ए" तत्व हैं, तो वे निजी डेटा साझा कर रहे हैं, जो मैं नहीं चाहता हूं।
मेरा वर्तमान वर्कअराउंड एक आंतरिक अद्वितीय आईडी उत्पन्न करना है जिसे मैं एक कुंजी के रूप में उपयोग कर सकता हूं, लेकिन इसके लिए मुझे डीओएम तत्व को संशोधित करने की आवश्यकता है, जिसे मैं टालने की कोशिश कर रहा हूं।
आपका प्रश्न क्या है? – Madbreaks
* "यह अधिकांश तत्वों के लिए ठीक काम करता है" * यह करता है? मुझे लगता है कि आपको एक सामान्य कुंजी '[ऑब्जेक्ट HTMLDivElement]' मिल जाएगी। ... लेकिन हाँ, एक एंकर अपने 'href' को' .toString() 'मान के रूप में देगा। –
आपको * ES.Next * के लिए प्रतीक्षा करनी है। * WeakMaps * इसकी अनुमति देगा। – jAndy