关于对象的key为另一对象的情况

问题描述:下面的代码中,c的值是多少?

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

分析: 我们都知道,对象的key不能是对象,而这儿的a和b都是对象,那么这样写c有值吗?

那我们就来打印看看就知道了:

结果就是这个样子了。那我们看到c的结构,不免就知道了,c的key值是“[Object Object]”。那这个“[Object Object]”是怎么来的呢?

这样我们就或许知道了“[Object Object]”可能时怎么来的了。但是真的就是调用了toString()吗?啥时候调用的???

带着这个疑问,我们做一个操作:

结果表明,在a和b作为c的key时,调用了toString()方法,那么也就说得通了,对象不能作为另一对象的key值。这儿a和b自身调用了toString,然后才屈居于c的。

所以,最后的结果也就不难得出了,同一个对象,对同一个key作两次赋值,那么第二次自然就覆盖了第一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DiuDiu_yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值