JSON序列化反序列化
var a = {
b: 1,
c: [1,2,3],
d: {d1: 'ddd1', d2: 'dddd2'}
}
var a2 = JSON.parse(JSON.stringify(a))
// 验证一下:如果改这边,那边的值不变,那就说明是深拷贝
a2.b = 2
console.log(a.b) // 1
a2.c[1] = 2222
console.log(a.c[1]) // 2
a2.d.d2 = 'ccccc'
console.log(a.d.d2) // dddd2
思路:
1.JSON序列化反序列化
2.递归克隆
3.判断节点的类型(不同的类型有不同的拷贝方法)
4.如果是基本类型就直接拷贝
5.如果是 object 就分情况讨论
6.分为普通对象、数组、函数,分别处理
7.检查环
8.不拷贝原型上的属性