浏览器打印对象的展开值与未展开值不一致

本文解释了浏览器如何在console.log中处理对象的展开,指出浏览器会遍历对象并将其转换为字符串,展开后的值受原始引用影响。首次展开时显示的是对象的引用,后续修改不会改变初次展开的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浏览器 console.log 注意点

问题:浏览器打印对象的展开值与未展开值不一致

我:在浏览器调试面板中打印一个对象,展开这个对象的时候,浏览器做了什么操作

AI: 在浏览器调试面板中打印一个对象时,浏览器通常会将其转换为字符串形式,以便于查看和理解其内部结构。具体操作可能因浏览器而异,但通常情况下,浏览器会遍历对象的属性,并将它们的值以字符串形式拼接起来,形成一个类似于 JSON 格式的字符串。
当您展开一个对象时,浏览器的展开操作实际上是对对象的遍历和序列化。在这个过程中,浏览器会将对象的属性名称和值都转换成字符串形式,并按照一定的格式进行排列和展示。

在解决这个问题前,先了解以下 js 内存机制

先创建一个a对象
在这里插入图片描述
保留第一个a未展开,展开第二个a,可以看到展开值与未展开时是一致的,此时如果对a所引用的值进行操作,那么展开值也会发生改变
如下,对a.n进行更改
在这里插入图片描述
此时展开第一个a,发现展开值发生了变化,因此,
我认为在浏览器第一次展开对象时,会获取对象的引用值进行展示,而在展示后,再对a的属性进行修改操作不会再影响展开值

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值