【发布时间】:2013-08-24 02:36:38
【问题描述】:
我有什么理由不应该使用函数引用作为对象的属性/键?此代码在 Chrome、Firefox 和 IE8 中有效,但“只是因为某些东西有效......”
var x = {}
var a = function() { return 'a' };
var b = function() { return 'b' };
x[a] = 1
x[b] = 2
x[a] === x[a] // returns true
x[a] === x[b] // returns false
x[b] === x[b] // returns true
x[a] // returns 1
x[b] // returns 2
【问题讨论】:
-
具有相同主体的两个不同函数将序列化为相同的字符串。这可能不是我们想要的。
-
哦,仅供参考,ECMAScript 6 将引入正确的映射:wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets。任何值/对象都可以成为键。
标签: javascript performance cross-browser