怎么在JavaScript中实现对象深拷贝

这篇文章给大家介绍怎么在JavaScript中实现对象深拷贝,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

JavaScript是什么

JS是JavaScript的简称,它是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器的一部分,主要用于web的开发,可以给网站添加各种各样的动态效果,让网页更加美观。

1. 序列化转成json字符串深拷贝

let newData = JSON.parse(JSON.stringify(data));
 
if (newData === data) {
    console.log(true);
} else {
    console.log(false);
}
// false

注意:此方法仅在原对象包含可序列化值类型且没有任何循环引用时才有效。

2. Object.assign()深拷贝

var obj3 = {};
将obj合并到obj3上
Object.assign(obj3, obj);
console.log(obj3);// {name: "小甜甜", age: 24, say: ƒ}
// 修改obj3的值原对象也不会发生改变
obj3.age = 66; console.log(obj);
// {name: "小甜甜", age: 24, say: ƒ} console.log(obj3);
// {name: "小甜甜", age: 66, say: ƒ}

注意:要拷贝的对象source里面的属性不是基础类型也是对象,或者属性含有对象数组,那这种方式的拷贝就不会把source对象里面的对象或者数组对象进行深拷贝。

3. 循环递归深拷贝(万能方法)

var arr = [1,2,3,4,5]
var arr2 = copyArr(arr)
function copyArr(arr) {
let res = []
for (let i = 0; i < arr.length; i++) {
 res.push(arr[i])
}
return res
}

关于怎么在JavaScript中实现对象深拷贝就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。