浅拷贝:新对象与原对象指向同一份内存地址
深拷贝:新对象与原对象完全独立,新对象与原对象指向的是两个内存地址
浅拷贝
1.直接赋值
- let source_obj = {
- a: 1,
- b: 2
- }
- let target_obj = source_obj;
2.Object.assign
- let source_obj = {
- a: 1,
- b: 2
- }
- let target_obj = Object.assign({}, source_obj);
3.扩展运算符...
- let source_obj = {
- a: 1,
- b: 2
- }
- let target_obj = {...source_obj};
深拷贝
1.结合json.parse和json.stringify
- let source_obj = {
- a: 1,
- b: { c: 2 },
- d: [3, 4]
- };
-
- let target_obj = JSON.parse(JSON.stringify(obj));
-
- console.log(target_obj); // 输出:{ a: 1, b: { c: 2 }, d: [3, 4] }
2.递归
3.使用lodash等第三方库