Object.assign()什么意思?Object.assign有什么用?Object.assign如何实现深拷贝?很多新手对于这个方法了解甚少,之前一直不去研究面试题和js的基础,根本不知道有这个方法,在实现深拷贝的时候会用到这个,那么今天就来总结一些关于Object.assign的常见知识点。
Object.assign()什么意思?Object.assign有什么用?Object.assign如何实现深拷贝?-QUI-Notes

定义

Object.assign(target-目标对象, ...sources-源对象)

MDN: 将所有可枚举属性的值从一个或多个源对象分配到目标对象
个人理解:将后面的源对象的属性复制到目标对象中,键值名一样的会被源对象属性覆盖

注意:如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖。后来的源的属性将类似地覆盖早先的属性。

  

案例 

let a = [1,2,3,6]
let b = [1,7,8]

let c = Object.assign(a,b)  // [1,7,8,6]

let aa = {
	name:'张三',
	age:18
}
let bb = {
	sex:'男',
	name:'李四'
}
let cc = Object.assign(aa,bb) // {name: "李四", age: 18, sex: "男"}

不建议对数组使用,我只是好奇能否对数组生效,这个方法就是针对对象类型的,虽然对数组也有效果。

就比如下面的案例中:对象name重复,被“李四”覆盖,数组1,2,3被1,7,8覆盖一样。目标对象的属性会被源对象的属性覆盖!!!
           

Object.assign有什么用?

1.复制一个对象
Object.assign({}, obj)

2.实现浅拷贝
Object.assign({}, obj)

3.合并对象
Object.assign(aa, bb, cc)

4.合并相同属性的对象,不是去重,是覆盖重复的属性
Object.assign({},aa, bb, cc)

当然还有一些作用,目前我水平有限,不能理解,需要的可以去mdn查阅(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#example_only_own_enumerable_properties),这里我就不班门弄斧了。