javascript - 函数是 javascript 对象属性的有效键吗?

标签 javascript

我想使用函数作为 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/

相关文章:

javascript - 自定义组合框设计到 php 网站

javascript - 如何重复 Firestore 查询直到满足条件?

javascript - svg Canvas 上的数字

javascript - 如何获取数组的最后一项并将其从 JavaScript 中的数组中删除?

javascript - TypeError [ERR_INVALID_ARG_TYPE] : The "data" argument must be of type string or an instance of Buffer, TypedArray,或DataView

javascript - Q promises chaining 获得多个结果值

javascript - 在 firebase 中查询日期的 startAt 和 endAt

javascript - 透明按钮无法在 Firefox 和 IE 中单击,但在 Chrome 和 Safari 中可以正常工作

javascript - 在 JavaScript 类中,您需要始终调用 super?对这个说法感到困惑

javascript - 来自服务器的响应,如何循环遍历每个元素