1:原生js中递归函数拷贝
深拷贝:将数据中所有的数据拷贝下来,对拷贝之后的数据进行修改不会影响到原数据 ,两个对象或数组不共享一块内存
<script>
function deepcope(obj){
// 定义一个接受对象
let newobj;
//判断obj是数组还是对象
if(obj instanceof Array){
newobj=[]
obj.forEach(item=>{
newobj=deepcope(item)
})}
// 对象
else if(obj instanceof Object)
{
newobj={}
for(let i in obj){
newobj[i]=deepcope(obj[i])
}
}else {
newobj=obj
}
return newobj
}
let obj={
abc:'123',
def:[{a:1,b:2,c:3},{q:8,w:9}],
qwe:{e:4,f:5}
}
let news=deepcope(obj)
news.pop()
console.log(news);
console.log(obj);
</script>
2:jQuery 中$.extend
jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象。
$.extend( [deep ], target, object1 [, objectN ] )
deep 可选,Boolean类型 指示是否深度合并对象,默认为false。如果该值为true
target Object类型 目标对象
object1 可选。 Object类型 第一个被合并的对象。
var obj = {};
var object = { name: 'Bruce', career: "doctor" };
jQuery.extend(deep,obj, object); //obj = { name: 'Bruce', career: "doctor" }
3:函数库 lodash,提供 cloneDeep 实现
1.下载相关库
npm i --save lodash
2.在相关文件中引入
import _ from "lodash"
3.调用 _.cloneDeep() 方法实现深拷贝
<script>
import _ from "lodash"
var objects = [{ 'a': 1 }, { 'b': 2 }];
var deep = _.cloneDeep(objects);
console.log(deep[0] === objects[0]); //false
</script>
————————————————
版权声明:本文为CSDN博主「Wyyyy1024」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44389562/article/details/111036129