今天在做项目的过程中,需要合并两个对象,覆盖重复的。我认为Object.assign就足够了。但是我发现,使用之后,之前的数据源会发生变化。写法如下:consta={id:1,show:true}constb={id:1,admin:true}constdata=Object.assign(a,b)console.log(data)console。log(a)虽然data的数据返回是我想要的,但是当你打印a的时候,你会发现a和data返回的结果是一样的,如果不再次处理a会有影响,但是如果你还需要在后面的逻辑中去处理a,肯定是有问题的。查看文档,Object.assign()用于将所有可枚举的自身属性的值从一个或多个源对象复制到一个目标对象。它将返回目标对象。也就是说Object.assign中的第一个值是目标对象,Object.assign合并属性后返回的是目标对象,返回的结果会改变第一个值。这就证明了我上面提到的问题。这个问题的解决方法也很简单。只需定义一个空对象并将其放在第一个值中即可。consta={id:1,show:true}constb={id:1,admin:true}constc={}constdata=Object.assign(c,a,b)console.log(data)这将不改变原始数据源。okk,今天就是分享这些bug。我要继续写bug了~~我是前端的鱼
