Object.assign(),lodash 中 assign和 merge 的区别

一、object.assign方法的第一个参数是目标对象,后面的参数都是源对象。

如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。

const target={a:1,b:1};

const source1={b:2,c:2};

const source2={c:3};

Object.assign(target,source1,source2);

target// {a:1, b:2, c:3}

Object.assign方法实行的是浅拷贝,而不是深拷贝。也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。只拷贝第一层

二、merge?也和?assign?类似,不同的地方在于?merge?遇到相同属性的时候,如果属性值为纯对象(plain object)或者集合(collection)时,不是用后面的属性值去覆盖前面的属性值,而是会把前后两个属性值合并