Object.assign(target,sources)
target : 目标对象,接收源对象属性的对象,也是修改后的返回值
sources :源对象,包含被合并的属性
往集合中的每个对象里添加一个键值对
let obj=[{name:"喜羊羊"},{name:"美羊羊"},{name:"懒羊羊"}]
obj.forEach((item,index)=>{
Object.assign(item,{from:"羊羊村"})
})
console.log(obj)
// [{name: '喜羊羊', from: '羊羊村'},{name: '美羊羊', from: '羊羊村'},{name: '懒羊羊', from: '羊羊村'}]
合并对象
let obj1 = {a:1,b:2}
let obj2 = {b:1,c:3,d:4}
let obj = Object.assign(obj1,obj2)
console.log(obj) // {a: 1, b: 1, c: 3, d: 4}
console.log(obj1) // {a: 1, b: 1, c: 3, d: 4}
console.log(obj2) // {b: 1, c: 3, d: 4}
深拷贝 :需要使用其他方法,因为Object.assign()只复制属性值
let obj1 = {a:1,b:{c:2}}
let obj = JSON.parse(JSON.stringify(Object.assign(obj1)))
obj1.a = 4
obj1.b.c = 4
console.log(obj1) // {a:4,b:{c:4}}
console.log(obj) // {a:1,b:{c:2}}
基本类型会被包装为对象
let v1 = '哈哈哈'
let v2 = 11
let v3 = true
let obj = Object.assign({},v1)
console.log(obj) // {0: '哈', 1: '哈', 2: '哈'}
let obj2 = Object.assign({},v2,v3,null,undefined)
console.log(obj2) // {}