深克隆与浅克隆之间的区别
深克隆:用递归复制了对象的所有层级
浅克隆:浅复制只复制一层对象的属性
浅克隆
浅克隆是指在克隆对象时,对于基本数据类型的变量会重新复制一份,而对于引用类型的变量只是对引用进行克隆。就是将栈中的值复制一份给新的变量,因为浅复制只会将对象的各个属性进行依次复制,并不会进行递归复制,而 JavaScript 存储对象都是存地址的,所以浅复制会导致两个对象指向都是同一个地址,一个发生改变另外一个也发生改变。


看一下上面的例子,定义了一个arr数组,再将arr的值赋值给Arr,输出Arr,得出的值是arr的值,再通过Arr使用数组的方法添加进了一个数字,结果arr和Arr两个都输出是同一个数组。简单的来说,也就是定义一个Array数组名字叫arr,然后将arr的值复制一份给Arr,这里Arr和arr两个数组指向的地址都是同一个Array数组,只要Arr和arr两个数组中一个改变,A让人和arr两个数组都会改变。
深克隆
深克隆本质上是创造一个完全一样的对象,但是两个对象的引用地址完全不同,也就是不同与浅克隆,一个对象的改变,另外一个对象并不会发生改变。

①判断是不是原始值
②判断是数组还是对象 Object.prototype.toString.call([]) = ‘[object Array]’

本文探讨了JavaScript中的深克隆和浅克隆概念。浅克隆仅复制对象的第一层属性,导致两个对象共享同一内存地址,因此一处修改会影响另一处。深克隆则通过递归复制确保新对象与原对象独立,修改其中一个对象不会影响另一个。
最低0.47元/天 解锁文章
4406

被折叠的 条评论
为什么被折叠?



