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