浅拷贝:仅仅是指向被复制的内存地址,如果原地址发生 改变,那么浅拷贝出来的对象也会相应的改变
新旧对象共享内容,修改其中一个,另一个也会受到影响
1.通过=直接赋值
var obj={name:“张三”,age:18};
var obj1 = obj;
console.log(obj1);
obj1.age=20;
console.log(obj);
console.log(obj1);
2.通过Object.assign()方法
var obj={name:“张三”,age:18};
var obj1=object.assign(obj);
obj1.age=20;
console.log(obj);
console.log(obj1);
深拷贝:在内存中开辟一块新的地址用于存放复制的对象
新旧对象不会共享内存,修改其中的一个不会影响另一个
1.通过JSON对象实现深拷贝
JSON.stringfy:将js的值(对象或者数组)转为一个JSON字符串
JSON.parse:用来解析JSON字符串,转换为Object类型
var obj={name:“张三”,age:18};
var obj1=JSON.parse(JSON.stringigy(obj));
obj1.age=20;
console.log(obj);
console.log(obj1);
2.使用扩展运算符实现深拷贝
var obj={name:“张三”,age:18};
var obj1={...obj,age:20}
console.log(obj);
console.log(obj1);