关于js对象的属性被覆盖的一个问题

 var a={};
  b = {key: "b"};
  c = {key: "c"};;
  a[b] = 123;
  a[c] = 456;
  console.log(a[b]);  //456

原因是
所以相当于a[object Object] = 123; a[object Object] = 456;
想问一下为什么 a[b] 会变成这种形式   或者问下对象覆盖的原理?是我理解的不够深刻。。网上没查到可以解答的资料~谢谢dalao解答
全部评论
key会自动stringfy。。 相当于Object.prototype.toString.call(b), 所以会出现[object, Object]的key值。
点赞 回复 分享
发布于 2017-09-02 23:19
我猜 []里面调用了toString 所以对象就变成了object Object 然后a[b] a[c]是给同一个属性赋值了 所以456覆盖了123
点赞 回复 分享
发布于 2017-09-02 22:33

相关推荐

自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务