JS实现深拷贝 发表于 2020-12-24 | 分类于 JS | 阅读次数: | 次 字数统计: 295字 | 阅读时长 ≈ 1分钟 最近得学一下 一: 递归 复制法1234567891011121314151617let deepClone = (obj)=>{// 1. 先判断 是否是 [] || {}, 不是 就返回 if(!obj | typeof obj !== "object") return obj // 2. 初始化 objClone let objClone = Array.isArray(obj)?[]:{} for(key in obj){ if(typeof obj[key] == "object") objClone[key] = deepClone(obj[key]) else objClone[key] = obj[key]; } return objClone}let arr = ["sf", 1, {"fsdf": "fsdf"}, [1,2,3]]console.log(deepClone(arr)); 二: JSON 方法123let obj = [56, 43]let objClone = JSON.parse(JSON.stringify(obj));console.log(objClone); 三: lodash 方法12345678910111213141516171819202122232425262728// 在这里主要的是 析构 cloneDeep 函数 之后 重命名为 clone 函数const {cloneDeep: clone } = require('lodash')let objA = { a: 1, b: { c: 2, d: { e: 3 } }}// copy objA save as new variable objBlet objB = clone(objA)// change the values in the original object objAobjA.a = 20objA.b.c = 30objA.b.d.e = 40console.log(JSON.stringify(objA))// → {"a":20,"b":{"c":30,"d":{"e":40}}}// objB which is the cloned object is still the sameconsole.log(JSON.stringify(objB))// → {"a":1,"b":{"c":2,"d":{"e":3}}} -------------本文结束 感谢您的阅读------------- 相关文章 点击查看 前端进阶之路 JS Generator 生成器和迭代器 JS Event Loop机制 JS 正则表达式 JS 学习文章总结 JS 之 apply,call, bind的运用