> 时尚
js对象深拷贝的好的方法(实现js对象的深拷贝和浅拷贝)
导语:js中对象数据类型的深拷贝方法(5种)
一、使用JSON暴力转换
通过JSON.stringify() 和 JSON.parse() 将对象转为字符串之后再转为对象。
var obj = {name:&39;};var obj2 = JSON.parse(JSON.stringify(obj))
二、 使用拓展运算符+解构赋值
方法的局限性在于,当值为undefined、function、symbol会在转换过程中被忽略。
var obj = {name:&39;,age:13};var obj2 = {...obj}
三、 使用对象的合并,即通过Object.assign()方法
注意:该方法的第一个参数必须是空对象
var obj = {name:&39;,age:13};var obj2 = Object.assign({},obj);
四、通过遍历对象
var obj1 = {name:};var obj2 = {};for(x in obj1) { obj2[x] = obj1[x];}
五、利用循环递归
以上四种方法只能进行一层拷贝,即当对象的属性值也是对象时,就无法实现该属性的深拷贝,在这里提供一种利用循环递归进行深拷贝的方法。
var obj = {name: ,sex: { age: }};var newObj = {};function deepClone(obj, newObj) {var newObj = newObj || {};for (let key in obj) {if (typeof obj[key] == &39;) {newObj[key] = (obj[key].constructor === Array) ? [] : {}deepClone(obj[key], newObj[key]);} else {newObj[key] = obj[key]}}return newObj;}console.log(deepClone(obj, newObj));//{name: ,sex: {age: &39;}}
本文内容由快快网络小梓创作整理编辑!