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:
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With