Are functions valid keys for javascript object properties?

javascript

Solution

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:

var registry = {
    "function Foo(){  }" : 42,
    "function Bar(){  }" : 43
};

This is a default behaviour, it works in IE too if you were wondering. It was actually exploited by John Resig in his famous `addEvent` function.

Problem

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?

Original source