欢迎点击「算法与编程之美」↑关注我们!
本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
1 为什么要用到拷贝
在平时的学习生活中,我们在JS程序中需要进行频繁的变量赋值运算,对于一般的字符串、布尔值等可以直接使用赋值运算符“=”即可,但是对于数组、对象、对象数组的拷贝,我们就需要用到拷贝了。
2 什么是深拷贝与浅拷贝
首先我们从字面上来理解深拷贝、浅拷贝与拷贝的含义。
拷贝:就是复制一份,指将对象数据进行复制。
深拷贝:如果拷贝的时候,将数据的所有引用结构都拷贝一份,那么数据在内存中独立就是深拷贝。
浅拷贝:如果拷贝的时候,只针对当前对象的属性进行拷贝,而属性是引用类型这个不考虑,那么就是浅拷贝。
重要的是在讨论深拷贝与浅拷贝的时候一定要保证对象的属性也是引用类型。
下面我们用一个简单的实例来理解拷贝的含义:
eg : var o = { name : ‘ 张三 ‘ } ;
var obj = o;
上面这个例子中,我们就能知道这个不是拷贝,为什么呢?是因为我们针对拷贝而言,是拷贝对象,所以这里我们只是拷贝了一个变量的引用,而没有将对象拷贝出来,那么这里就只能叫做引用赋值。
下面我们用一段代码来看看什么是浅拷贝: