Javascript 更新对象时不显示新属性

Javascript 更新对象时不显示新属性,javascript,Javascript,示例中的代码可以正常工作,但在我的代码中却不行 我正在尝试用新属性更新对象 const overrides = {paths:{"/":{}}} const aItems = [{endpoint:"/test"}] const mockOverrides = JSON.parse(JSON.stringify(overrides)); aItems.forEach(({endpoint}) => { if (!mockOverri

示例中的代码可以正常工作,但在我的代码中却不行

我正在尝试用新属性更新对象

 const overrides = {paths:{"/":{}}}
 const aItems = [{endpoint:"/test"}]
 const mockOverrides = JSON.parse(JSON.stringify(overrides));

 aItems.forEach(({endpoint}) => {
    if (!mockOverrides.paths[endpoint]) {
      mockOverrides.paths[endpoint] = {};
    }
    console.log(mockOverrides); // result {paths:{"/":{}}} expected {paths:{"/":{}, "/test":{}}}
    console.log(mockOverrides.paths[endpoint]) // result is  {}  twice
})
如您所见,该属性未显示在输出中 但不知为什么会发生这种情况?

foreach
方法的末尾添加了一个
后,它似乎工作正常:

const overrides={path:{”/:{}
常量aItems=[{endpoint:“/test”}]
const mockOverrides=JSON.parse(JSON.stringify(overrides));
aItems.forEach({endpoint})=>{
如果(!mockOverrides.path[endpoint]){
mockOverrides.path[endpoint]={};
}
console.log(mockOverrides);//结果{路径:{”/:{}}}应为{路径:{”/:{},“/test”:{}}
console.log(mockOverrides.path[endpoint])//结果是{}两次

});是的。我写的,但被删除了。您缺少
。除此之外,代码还可以。

可能是因为新属性被设置为mockOverrides.path的
\uuu proto\uu

您可以通过在chrome控制台上运行下面的代码来复制它(也可以从上面的引用中获得)


我知道这里很好,但在我的代码中没有。我说这个值没有出现在新对象中,我只是忘记添加
,但是为什么在我的代码中它不起作用,这意味着这个代码在隔离状态下是可以的。如果您能够创建一个不起作用的测试用例,那么我们可以看看为什么会这样。也许还有其他代码以某种方式影响着这一点。例如,您可以尝试将此代码移动到它自己的函数中,以便更好地将其分离。
var  Person=function (name) {
  this.Fname=name;
  this.health=100;
};

var Mateen=new Person("Mateen");

console.log(Mateen);
// result: { Fname: 'Mateen', health: 100 }
Person.prototype.level=1;

console.log(Mateen);
// result: { Fname: 'Mateen', health: 100 }
console.log(Mateen.level);
// result: 1