1、概念 :
生成与原对象一模一样的对象。
注意 :简单类型的赋值为赋值,复合类型的赋值为赋址。
2、两种拷贝形式:
1.浅拷贝:只会复制对象的第一层数据
2.深拷贝:不仅仅会复制第一层的数据,如果里面还有对象,会继续进行复制,直到复制到全是基本数据类型为止。
思路:如果是简单类型,就直接赋值,如果是复合类型,就继续循环遍历。

3、数组和对象的拷贝
数组可以使用for循环拷贝数据给另一个对象;
对象可以使用for...in...循环去拷贝数据给另一个对象;
数组:复制一个数组。因为是复合类型,如果直接arr2 = arr1,如果arr2后面进行了push等操作,就会影响到原数组,因为指向的是同一个内存地址,所以可以用以下方式进行复制值操作

对象:

4、Object.assign()
和extend类似。对象的拷贝,是浅拷贝,只复制一层。
Object.assign(target, source1,source2,source3...) :右值赋给左值。
合并多个对象,用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)
注意:看以下代码,arr1的对应的下标数组会覆盖arr2对应的下标,如果arr1只有一个,那么就只会覆盖arr2的第一个。


网友评论