技术文章 > Web开发 >  JavaScript > 正文

js对象深拷贝的方法

宋宋大人

小编向大家介绍过了JavaScript中对象是什么(https://www.py.cn/web/js/22873.html)。既然JavaScript中所有的事物都是对象, 那么难免会遇到拷贝的情况,本文小编就向大家介绍JavaScript中对象深拷贝的方法:1. 序列化转成json字符串深拷贝2. Object.assign()深拷贝3. 循环递归深拷贝(万能方法)。

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
}

以上就是js对象深拷贝的三种方法,使用循环递归的方法进行深拷贝是最优的一种方法,比较推荐哦~更多js学习推荐:js教程

免费视频教程
本文原创发布python学习网,转载请注明出处,感谢您的尊重!
相关文章
 python如何实现工作表合并?
 python如何将九九乘法表写入到Excel?
 python中pandas_datareader库怎么用?
 python中如何编写函数并调用?
 Python如何自动生成考试试卷?
相关视频章节
 Python蟒蛇绘制代码分析
 Python概述
 解决提示“‘python’不是内部或外外部命令
 python命名规范
视频教程分类