【发布时间】:2012-09-12 10:45:26
【问题描述】:
这段代码发生了什么?
var a = {a:1};
var b = {b:2};
var c = {};
c[a] = 1;
c[b] === 1 // true!
c[b] = 2;
c[a] === 2 // true!
具体来说,为什么在c 中查找b 会返回存储在a 属性中的值?
在 JavaScript 中使用对象作为属性的键是什么意思?
我已经在 Chrome/Node 和 Firefox 中对此进行了测试。
【问题讨论】:
-
当前 javascript 不支持将对象作为键,它可能会获得连贯(转换为)字符串,该字符串将是 [object Object] 并存储值,因此它为每个对象作为键提供 true,但将来“地图”是您可以用来将对象存储为键的东西。
-
听起来很有趣@Sushil。你有关于这个潜在的未来 Map 类的信息的参考吗?经过几分钟的搜索,我在任何地方都找不到它。
-
它是 ECMAScript 6 的未来实现 developer.mozilla.org/en-US/docs/JavaScript/Reference/… 这里你去,另外还有一个非常好的 WeakMap 概念(我个人喜欢它)developer.mozilla.org/en-US/docs/JavaScript/Reference/… 这里你可以阅读它
-
谢谢@Sushil,太好了:)
标签: javascript