Chrome 展开时显示不同的对象内容
Chrome displays different object contents on expand
为什么 Chrome 显示两个不同的数据集取决于您是否展开了对象视图?
在收缩视图中,我的对象有两个属性:
在展开视图中,我的对象具有三个属性:
您在控制台中看到的对象是该对象在特定时间点(您记录它的时间)的快照。当您展开对象时,它会再次计算属性。
在下面的示例中,我创建了一个具有两个数组属性的对象。我在控制台记录了它,然后我向它添加了第三个 属性、c
。
只有前两个属性仍然显示,即使我刚刚添加了第三个 属性。在控制台中展开对象后,我可以看到第三个。它是对象的最新状态。
如果您将鼠标悬停在小蓝色 i
图标上,它会解释它所做的事情:
Value below was evaluated just now.
@Gideon Pyzer 是对的。属性是在控制台中展开对象后计算和添加的。
只需在调试代码上方添加一行代码,然后重新打开 chrome 开发工具,您就会看到不同之处。
obj = Object.freeze(obj); //add this line before your console.log
console.log(obj);
之前:
之后:
我的一个类似问题:
Why can't I access the attr of the javascript object shown in chrome dev tool
您可以克隆您的对象以防止re-evaluate。
console.log(Object.assign({}, obj));
您可以使用此模块获得真实的硬拷贝对象。它会在您调用它时为您提供对象的快照。
https://www.npmjs.com/package/nest-object-deep-copy
const nestedHardCopy = require('nest-object-deep-copy');
console.log(nestedHardCopy(obj));
为什么 Chrome 显示两个不同的数据集取决于您是否展开了对象视图?
在收缩视图中,我的对象有两个属性:
在展开视图中,我的对象具有三个属性:
您在控制台中看到的对象是该对象在特定时间点(您记录它的时间)的快照。当您展开对象时,它会再次计算属性。
在下面的示例中,我创建了一个具有两个数组属性的对象。我在控制台记录了它,然后我向它添加了第三个 属性、c
。
只有前两个属性仍然显示,即使我刚刚添加了第三个 属性。在控制台中展开对象后,我可以看到第三个。它是对象的最新状态。
如果您将鼠标悬停在小蓝色 i
图标上,它会解释它所做的事情:
Value below was evaluated just now.
@Gideon Pyzer 是对的。属性是在控制台中展开对象后计算和添加的。
只需在调试代码上方添加一行代码,然后重新打开 chrome 开发工具,您就会看到不同之处。
obj = Object.freeze(obj); //add this line before your console.log
console.log(obj);
之前:
之后:
我的一个类似问题: Why can't I access the attr of the javascript object shown in chrome dev tool
您可以克隆您的对象以防止re-evaluate。
console.log(Object.assign({}, obj));
您可以使用此模块获得真实的硬拷贝对象。它会在您调用它时为您提供对象的快照。
https://www.npmjs.com/package/nest-object-deep-copy
const nestedHardCopy = require('nest-object-deep-copy');
console.log(nestedHardCopy(obj));