明天在做我的项目的过程中,须要把两个对象合并而且把反复的笼罩掉,我就想到用 Object.assign 就能够满足。但发现用了之后会扭转之前的数据源,写法如下
const a = {id:1, show:true}
const b = {id:1, admin:true}
const data = Object.assign(a,b)
console.log(data)
console.log(a)
尽管 data 的数据返回是我想要的,但当打印 a 的时候,你会发现 a 和 data 返回的是一样的后果,如果不再进行解决 a 就不会有影响,但如果你在前面的逻辑中还须要对 a 做解决,必定是有问题的。
参看文档后发现,Object.assign() 用于将所有可枚举的自有属性的值从一个或多个源对象复制到指标对象。它将返回指标对象。也就是说,Object.assign 里的第一个值是指标对象,Object.assign 返回的是合并属性后的指标对象,返回的后果会扭转第一个值。这就证实了我下面所说的问题,解决这个问题的方法也很简略,再定义一个空对象,放在第一个值就好了
const a = {id:1, show:true}
const b = {id:1, admin:true}
const c = {}
const data = Object.assign(c,a,b)
console.log(data)
这样写就不会扭转原数据源了。
okk,明天就是分享这些 bug。我要持续去写 bug 了~~ 我是前端里的一条鱼