上代码:
对象全为基本数据类型
let aObj = { c: 5 }
let bObj = { a: { ac: 2 } }
let cObj = { b: 1 }
let newObj = Object.assign(aObj, bObj, cObj)
console.log(newObj)
cObj.b = 4
console.log(newObj)
输出
没有改变
对像中的属性存在对象时
let aObj = { c: 5 }
let bObj = { a: { ac: 2 } }
let cObj = { b: 1 }
let newObj = Object.assign(aObj, bObj, cObj)
bObj.a.ac = 3
console.log(newObj)
输出
改变bObj里面的值后,新对象也改变
结论:因为存在对象里面的属性存在对象时,把对象的引用赋值给了对应的属性,所以原对象改变属性值,新对象的引用由于指向的同一个对象,所以所得到的值也会跟着改变。