Attach hidden state to arbitrary objects in JavaScript (like jQuery.data() without the jQuery)