Improve `hashJSObj` to work around IE8 bugs by exploiting IE8. This now allows DOM nodes to be used as keys without leaking memory and ensures the hash key is never enumerable so it doesnt mess up serializing to JSON