Javascript does not support a unique python-like hash for each object. You can create a function to assign a unique string to an object, or get a string if it has already been assigned.
var getUniqueId = (function(){ // uncomment this block if you want to avoid memory leaks // in browsers with crappy garbage collectors. /* try { window.addEventListener('unload', cleanup); window.addEventListener('beforeunload', cleanup); } catch (_) { try { window.attachEvent('onunload', cleanup); window.attachEvent('onbeforeunload', cleanup); } catch (__){}} function cleanup () { guid.knownObjects.length=0; } */ guid.knownObjects=[]; return guid; function guid (obj) { for (var i=guid.knownObjects.length; i--;) { if (guid.knownObjects[i][0]===obj) return guid.knownObjects[i][1]; } var uid='x'+(+(''+Math.random()).substring(2)).toString(32); guid.knownObjects.push([obj, uid]); return uid; } }());
Testing:
getUniqueId(window) > "x7onn8ne58ug" getUniqueId(document) > "x9jeriqjdf9o" getUniqueId(document) > "x9jeriqjdf9o" getUniqueId(window) > "x7onn8ne58ug"
You can do console.dir (getUniqueId.knownObjects) for some useful debugging information.
getUniqueId.knownObjects > [ Array 0: DOMWindow 1: "x7onn8ne58ug" , Array 0: HTMLDocument 1: "x9jeriqjdf9o" ]
source share