为什么在执行该代码片段之后:
var a = {};
var b = {};
var g = {};
g[a] = "aa";
g[b] = "dd";
g [a]的值是"dd"?
a == b是假的,那么这里发生了什么?
JavaScript对象键只能是字符串.存储时g[a] = 'aa',使用toString()方法将a转换为字符串,1因此您实际存储'aa'在g[a.toString()].
在这种情况下,a.toString()是'[object Object]',等于b.toString().
为了使它真的很明显,你问题中的代码等同于:
var g = {};
g['[object Object]'] = 'aa';
g['[object Object]'] = 'dd';
故事的道德:只是不要尝试使用除字符串之外的任何东西作为属性名称.
1来源:MDC:JavaScript成员运营商 - 财产名称
| 归档时间: | 
 | 
| 查看次数: | 185 次 | 
| 最近记录: |