Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
ES系列文章
Object.assign()
Object.assign 方法用于对象的合并,将复制对象(source)的所有可枚举属性,复制到目标对象上。如下:
//目标对象
let target = {}
//复制对象
let source = {
a:1,
b:2
}
Object.assign(target,source)
console.log(target)
//输出{a:1 b:2}
当目标对象与复制对象有同名属性或多个复制对象有同名属性,则后面的属性会覆盖前面的属性。如下:
let target = {
a:5
}
let source = {
a:1,
b:2
}
Object.assign(target,source)
console.log(target)
let target = {
a:{
b:{
c:1
},
e:7,
f:8,
g:9
}
}
let source = {
a:{
b:{
c:1
},
e:2,
f:3
}
}
Object.assign(target,source)
console.log(target)
// a: b:{c:1} e:2 f:3
总结:
Object.assign在拷贝对象的时候是有问题的。
-
对于基本数据类型是可以直接替换的,没有问题。
-
对于引用数据类型只把地址直接指过去了,在引用数据类型中有些属性会丢掉。 所以使用Object.assign去复制较复杂结构时并不安全。 Object.assign在拷贝对象的时候只能是浅拷贝,不能是深拷贝。
一个前端小白,若文章有错误内容,欢迎大佬指点讨论!