我想一些“私人”的数据与DOM元素相关联。我没有将这些数据添加到DOM元素本身(我想避免更改DOM元素),而是将一个单独的数据对象作为地图使用。使用DOM元素键的JavaScript地图
不是:
document.GetElementById('someElementId').privateData = {};
我想做
internalPrivateDataMap[document.GetElementById('someElementId')].privateData = {};
并不是所有的元素都有一个ID字段,还有一些是动态创建的,所以我不能使用id作为键。
对大多数元素来说,这很好,但对于“a”元素,被使用的关键似乎是元素的href,我认为是因为DOM为元素定义了toString()函数。
这样做的结果是,如果我有两个“一”与同HREF,他们正在共享privateData,这是我不希望的元素。
我目前的解决方法是产生内部UNIQUEID我可以作为一个按键使用,但需要我来修改DOM元素,而我试图避免的。
什么是你的问题? – Madbreaks
*“这对大多数元素都适用”*它的确如此?我想你会以这种方式得到一个通用键'[object HTMLDivElement]'。 ...但是,是的,一个锚会将'href'作为'.toString()'的值。 –
您必须等待* ES.Next *。 * WeakMaps *将允许。 – jAndy