深拷贝(什么是深拷贝,为什么要进行深拷贝,如何进行深拷贝)

什么是深拷贝,浅拷贝

深拷贝和浅拷贝是针对复杂数据类型来说的,浅拷贝只拷贝一层,而深拷贝是层层拷贝。

1.浅拷贝: 将原对象或原数组的引用直接赋给新对象,新数组,新对象只是对原对象的一个引用

2.深拷贝: 创建一个新的对象和数组,将原对象的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用”

 

那么怎么实现一个深拷贝呢?
实现思路:

  1. 检查类型,判断类型是否为引用类型,是就进行深拷贝,否则浅拷贝
  2. 使用递归
  3. 检查环,判断当前引用是否指向自身,避免进入死循环
  4. 需要忽略原型
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;
}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部