当我在我的代码上手动遍历它时,如何从浏览器控制台上可见但 returns null 的对象获取数据?

How to get data from an object visible on browser console but returns null when I manually traverse it on my code?

//listen for messages
channel.on("messageAdded", function (message) {
    //render new message    
    console.log("New awesome message", message)
    //this is null for some reason
    console.log("Stringify 3",JSON.stringify(message.state.aggregatedDeliveryReceipt))
}

但是通过控制台右键单击将其存储为全局对象,

我能做到 console.log(temp1.state.aggregatedDeliveryReceipt)

然后回来

问题是,当我使用相同的 state.aggregatedDeliveryReceipt 在我的 JS 文件上,我无法获得所需的结果。它说它是 null

谷歌搜索后,我了解到它是某种构造函数...

我尝试过的:

  1. 在 temp1
  2. 上使用了 JSON.stringify()

结果: 未捕获的类型错误:将循环结构转换为 JSON --> 从带有构造函数的对象开始 'l' | 属性 '_fsm' -> 带构造函数的对象 'o' --- 属性 'context' 收圈

  1. temp1.state
  2. 上使用过

结果:

{"sid":"IMd0XXXXXXXfd8aa","index":532,"author":"XXXX","body":"XXXX","timestamp":"2020-XXXXX:12.XX","dateUpdated":"2020-11-XXXXX:12.574Z","lastUpdatedBy":null,"attributes":{},"type":"text","media":null,"participantSid":"MB0a5d2XXXXXXX27ddf4da6","aggregatedDeliveryReceipt":null}
  1. temp1.state.aggregatedDeliveryReceipt 上使用了它,并且也返回 null

  2. 直接在控制台上做 结果:它有效,但我无法在我的 JS 文件中复制它。由于某些原因,控制台可以直接看到它但不能通过我的代码

如果您在 devtools 控制台中的行为与您的代码中的行为不同,则可能是计时问题。当您尝试在 devtools 控制台中访问它时,数据很可能已经加载,而如果您在代码中访问它的时间过早,它可能还没有加载。

作为第一步,使用 setTimeout() 将代码读取值延迟适当的时间(几秒钟),然后查看是否可以正确读取。那么至少你会知道问题是什么。