一、区别:简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,如果B没变,那就是深拷贝。 此篇文章中也会简单阐述到栈堆,基本数据类型与引用数据类型,因为这些概念能更好的让你理解深拷贝与浅拷贝。 例如: let a=[0,1,2,3,4], b=a; console.log(a===b)...
深拷贝和浅拷贝最根本的区别在于是否是真正获取了一个对象的复制实体,而不是引用, 深拷贝在计算机中开辟了一块内存地址用于存放复制的对象,而浅拷贝仅仅是指向被拷贝的内存地址,如果原地址中对象被改变了,那么浅拷贝出来的对象也会相应改变。 1.深拷贝 1.1. 最简单的方法就是JSON.parse(JSON.stringify()) function...
浅拷贝则比赋值多了一层,把对象的值复制一份赋给一个新变量。当对象里的属性值是基础数据类型时,其中一个对象改变属性值,另一个对象不会受到影响;但是当对象里的属性值是引用数据类型时,那么这里面的引用数据类型就会是联动的,其中一个对象改变属性值,另一个对象相应的属性值就会发生改变。简单的说,浅拷贝...
(1)Object.assign(target,sources) 【浅拷贝时,target要设个空对象或者数组,否则就相当于直接赋值而不是浅拷贝】 (2)扩展运算符方式:cloneObj = {...obj};cloneArr= [...arr] (3)数组还可以用:arr.slice和arr.concat 深拷贝 深拷贝则是在堆内存中完全开辟了一块内存地址,并将原有的对象完全复制过来存放。