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)时,不⼆、
摘取梦想的启明星。绯闻女孩第一季插曲
是⽤后⾯的属性值去覆盖前⾯的属性值,⽽是会把前后两个属性值合并。圣诞节英语对话
三、对象深拷贝
function deepCopy(obj) {
经典词汇
watchguardvar result = Array.isArray(obj) ? [] : {};les mirables
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
if (typeof obj[key] === 'object' && obj[key]!==null) {
贱人就是矫情 英文
result[key] = deepCopy(obj[key]); //递归复制
} el {
result[key] = obj[key];
robert holley
}
}
}
return result;
}