浅拷贝的方式:
1.直接赋值
let a={a:1}
let b=a
2.Lodash.js库的方式
let a={a:1}
let b=_.clone(a)
深拷贝的方式:
部分深拷贝(不完全拷贝)
1.JSON.stringify对象转字符串,JSON.parse字符串转对象。
缺陷:不能拷贝对象的function、Date对象、正则、error对象、undefined
let a={a:1,b:{a:1}}
let b=JSON.stringify(JSON.parse(a))
2.Object.assign 将2个对象合并为新对象。
缺陷:只能拷贝第一层。
let a={a:1}
let b=Object.assign({},a)
3.es6的{...} 创建新对象
缺陷:只能拷贝第一层。
let a={a:1}
let b={...a}
完全深拷贝
1.Lodash.js的_.cloneDeep实现深拷贝
let a={a:1,b:{a:1}}
let b=_.cloneDeep(a)