Functions are almost objects
I was impressed! It seems that everything is clear and has long been known, but it never occurred to me.
Adapted from Secrets of JavaScript ninja by John Resig
var store = {
id: 1,
cache: {},
add: function (fn) {
if (! fn.uuid) {
fn.uuid = store.id ++;
return !! (store.cache [fn.uuid] = fn);
}
}
};
function ninja () {}
assert (store.add (ninja), "Function was safely added.");
assert (! store.add (ninja), "But it was only added once.");
Adapted from Secrets of JavaScript ninja by John Resig