由复制数据初探浅拷贝、深拷贝

150 阅读1分钟

问题

来源:show-start-demo

b站的一位小伙伴问的:

image.png 之前都没有注意到,后来测试了才发现确实有这个问题,附上出问题的代码: AppError类生产环境下传递error中没有message属性

涉及概念

值传递——复制原始数据类型

image.png

引用传递——复制数组、对象

  • 数组

image.png

  • 对象 image.png

浅拷贝

对象的扩展运算符 只拷贝第一层 拷贝的c是一个变量在内存中的地址

image.png

深拷贝

let superClone = JSON.parse(JSON.stringify(obj))

===运算符

比较的是两头在栈中的值,对于引用数据类型,两个地址是一样的才“全等”。若两个对象长一样但在堆中有不同地址,则不等。