You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

复制对象后部分属性值存在但控制台打印显示undefined的问题求助

复制对象后部分属性值存在但控制台打印显示undefined的问题求助

我碰到一个挺奇怪的问题:我复制了一个对象之后,里面有两个属性在控制台打印整个对象时显示undefined,但直接访问这两个属性(比如modelForm.action)却能得到正确的值,实在搞不懂哪里出问题了。

我的代码是这样的:

this.modelForm = Object.assign({}, this.formSelected)

console.log(this.modelForm)

console.log(this.modelForm.action)

控制台的输出情况:

第一个日志(打印整个对象):
action: undefined ​​ company_id: 1 ​​ created_at: "2022-12-19 19:13:21" ​​ deleted_at: null ​​ description: "ewef" ​​ html: null ​​ id: 7 ​​ name: "Form 3" ​​ status: undefined ​​ updated_at: "2022-12-19 19:45:34"

第二个日志(直接访问action属性):
"default"

我自己琢磨了几个可能的方向,也给大家列出来参考:

  • 这大概率是浏览器控制台的“引用延迟解析”特性搞的鬼:控制台打印对象时并没有立刻生成快照,而是保存了对象的引用,等你去查看的时候才读取最新状态。如果action和status是在console.log执行之后才被赋值的,就会出现这种矛盾的情况。可以试试用JSON.stringify打印对象快照:console.log(JSON.stringify(this.modelForm)),看看这两个属性在打印瞬间的真实值。
  • 检查下原对象this.formSelected的属性定义:比如action和status是不是用了getter访问器?或者是异步加载、延迟赋值的属性?Object.assign浅拷贝的时候可能不会触发getter的取值逻辑,而直接访问时才会触发。
  • 换一种对象复制方式试试,比如用展开运算符:this.modelForm = {...this.formSelected},排除Object.assign的潜在问题,看看结果是否一致。

备注:内容来源于stack exchange,提问作者Iago Alcântara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 07:50:27