js深拷贝
js深拷贝
在JavaScript中,有多种方法可以实现对象的深拷贝,下面介绍几种常用的方式:
-
手动遍历对象进行复制
function deepCopy(obj) { if (typeof obj !== 'object' || obj === null) { return obj; } let newObj = Array.isArray(obj) ? [] : {}; for (let key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = deepCopy(obj[key]); } } return newObj; }
-
使用JSON.stringify和JSON.parse进行深拷贝 注意:这种方式虽然简单,但是会忽略对象中的函数、循环引用等情况,需要谨慎使用
function deepCopy(obj) { return JSON.parse(JSON.stringify(obj)); }
-
注意:这种方式虽然简单,但是会忽略对象中的函数、循环引用等情况,需要谨慎使用
const _ = require('lodash'); let obj = { a: 1, b: { c: 2 } }; let newObj = _.cloneDeep(obj);