新来实习的同事遇到个bug找我解决,我也懵逼了半天,才发现是深浅拷贝的问题。在此复习一下js深浅拷贝的相关知识
浅拷贝
我自己的理解是浅拷贝只是复制了一个内存的指针,复制的变量和旧的变量指向同一个内存地址。浅拷贝是指只复制一层对象,当对象的属性是引用类型时,实质复制的是其引用,只要变量变了,其他的变量也会跟着改变;
实现方法
1 | var obj = { a:1, arr: [2,3] }; |
深拷贝
深拷贝是指复制对象的所有层级,开辟了一个新的内存。
实现方法
通过递归实现
1 | deepCopy(o) { |
通过JSON解析实现
1 | JSON.parse(JSON.stringify(obj)) |