浅拷贝简介
深拷贝是创建一个新对象,这个新对象包含原对象所有属性的全新拷贝,无论是基本数据类型还是引用类型的数据都会被完全复制一份,新旧对象间不存在任何关联,彼此独立。
前言
OK,最近又又又在学习JS的过程中遇到了有意思的问题,就是如何对一个复杂类型也就是对象类型实现深拷贝,浅拷贝大家都会,直接创建变量赋值就行,可是深拷贝呢?
我想到用for in
语法遍历对象属性,然后对新对象进行赋值 。
function shallowCopy(obj) {
let newObj = {};
for (let key in obj) {
// key是不是obj显示具有的属性
if (obj.hasOwnProperty(key)) {
newObj[key] = obj[key];
}
}
return newObj;
}
ok,问题是如果出现下面这种情况则无法满足,因为obj的子元素person任然是对象类型,直接赋值传进来的是地址,就不满足深拷贝了。那么接下来我们就要展开来详细谈论一下深拷贝。
var obj = {
person:{
name :'柳如烟',
age: 18
}
}
深拷贝实现方式
以下是我所知道的深拷贝方式
JSON.parse(JSON.stringify(obj))
structuredClone