跟着小编一起来看一看吧!js深拷贝的三种实现方式1、利用JSON对象字符串转换方法。

js深拷贝的三种实现方式?1、利用JSON对象字符串转换方法(对象中不能有函数,值不能是引用的),我来为大家讲解一下关于js深拷贝的三种实现方式?跟着小编一起来看一看吧!
js深拷贝的三种实现方式
1、利用JSON对象字符串转换方法(对象中不能有函数,值不能是引用的)。
function deepCopy(ele) {return JSON.parse(JSON.stri.jpg"y(ele)); } const obj = {a: {b: [1, [2, [, 3, 4]], { c: 5 }],}, }; const newObj = deepCopy(obj);newObj.a.b[2].c = 6;console.log(newObj.a.b[2].c, obj.a.b[2].c); // 6 52、利用递归遍历的方法
function deepCopy(ele) {const type = typeof ele;const baseType = ["boolean","number","string","undefined","function",];if (baseType.indexOf(type) > -1 || ele === null) return ele;const newType = Object.prototype.toString.call(ele);if (newType === "[object Array]") {const len = ele.length;if (!len) return [];const res = [];for (let i in ele) {res.push(deepCopy(ele[i]));}return res;}if (newType === "[object Object]") {if (Object.keys(ele).length === 0) return {};const res = {};for (let key in ele) {res[key] = deepCopy(ele[key]);}return res;}} const obj = {a: {b: [1, [2, [, 3, 4]], { c: 5 }],}, };const newObj = deepCopy(obj);newObj.a.b[2].c = 6;console.log(newObj.a.b[2].c, obj.a.b[2].c); // 6 5
