我想使用函数作为 javascript 对象中的键。以下是有效的,至少在 Chrome 中是这样:
var registry = {};
function Foo(){ };
function Bar(){ };
registry[Foo] = 42;
registry[Bar] = 43;
alert(registry[Foo] + " < " + registry[Bar]);
这是否包含在标准中?支持哪些浏览器?
最佳答案
你放在方括号之间的所有东西都会被转换成一个字符串,即使你放了一个函数、一个日期、一个正则表达式也会发生这种情况……所以,你实际上是在创建一个这样的对象:
var registry = {
"function Foo(){ }" : 42,
"function Bar(){ }" : 43
};
这是默认行为,如果您想知道,它也适用于 IE。它实际上被 John Resig 在他的 famous addEvent
function 中利用了.
关于javascript - 函数是 javascript 对象属性的有效键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10858632/