深拷贝(什么是深拷贝,为什么要进行深拷贝,如何进行深拷贝)
什么是深拷贝,浅拷贝
深拷贝和浅拷贝是针对复杂数据类型来说的,浅拷贝只拷贝一层,而深拷贝是层层拷贝。
1.浅拷贝: 将原对象或原数组的引用直接赋给新对象,新数组,新对象只是对原对象的一个引用
2.深拷贝: 创建一个新的对象和数组,将原对象的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用”
那么怎么实现一个深拷贝呢?
实现思路:
- 检查类型,判断类型是否为引用类型,是就进行深拷贝,否则浅拷贝
- 使用递归
- 检查环,判断当前引用是否指向自身,避免进入死循环
- 需要忽略原型
function deepClone(obj){// 判断当前对象是对象还是数组let result = Array.isArray(obj)?[]:{};if(obj && typeof obj === "object"){for(let key in obj){// 判断是否为自身属性if(obj.hasOwnProperty(key)){if(obj[key] && typeof obj[key] === "object"){//子元素为对象,进入递归result[key] = deepClone(obj[key]);}else{result[key] = obj[key];}}}}return result;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
