I’d like to use functions as keys in a javascript object. The following works, at least in Chrome:
var registry = {};
function Foo(){ };
function Bar(){ };
registry[Foo] = 42;
registry[Bar] = 43;
alert(registry[Foo] + " < " + registry[Bar]);
Is this covered by the standard? By which browsers is it supported?
Everything you put between square brackets is converted into a string, and this happens even if you put a function, a date, a regexp… So there, you’re actually creating an object like this:
This is a default behaviour, it works in IE too if you were wondering. It was actually exploited by John Resig in his famous
addEventfunction.