这段时间忙的我是欲仙欲死,导致公众号断更了好几天。
但收获也是巨大的,对于JS的一些应用有了一些新的理解,以后我慢慢写出来。
今天简单的写一个javascript里数组的深复制和浅复制。
先看代码:
首先通过for循环,给arr数组添加了内容,
然后声明变量arr2并把arr的值赋给它,
这看起来像是复制了一个数组,
毕竟console.log打印出来的值,
显示arr和arr2的值是一样的,
但这是一种假象,
其实这只是给数组arr添加了一个引用而已,
你对原数组的操作,会在新数组上引起相同的反应。
你看arr[0]='xx',
我们对arr数组进行了操作,
然后再次用console.log打印arr和arr2,
就会看到arr2数组也被修改了,
这就是“浅复制”,被复制的只是数组对象的引用。
现在我们再来看一下深复制:
先看代码:
先声明一个函数:copyArr,它有二个参数,oldArr, newArr,
分别是旧数组和新数组,
然后声明一个变量arr2
在函数中是通过for循环,将arr1的每一项都赋值给新数组arr2,
然后修改arr1的值,
再把arr1和arr2的值,都打印出来,
会发现新数组的值并没有被修改,
这说明这二个数组已经完全没有关联了。
这就是深复制。