主要在于复制出来的新对象和原来的对象是否会相互影响,改一个,另一个是否会变
区别
1)浅拷贝:仅仅是指向被复制的内存地址,如果原地址发生改变,那么浅拷贝出来的对象也会相应的改变
2)深拷贝:在内存中开辟一块新的地址用于存放复制的对象,新旧对象不会共享内存,修改其中一个,不会影响另一个
方法
1)浅拷贝
- 通过=直接赋值
- Object.assign(目标对象,源对象)方法
2)深拷贝
- 通过JSON对象实现深拷贝:
*1----JSON.stringify:将js的值(对象或者数组)转为一个JSON字符串
*2----JSON.parse:用来解析JSON字符串,转换为Object类型
var obj={name:'jack',age:18}
var obj1=JSON.parse(JSON.stringify(obj))
obj1.age=20
console.log(obj);//{name:'jack',age:18}
console.log(obj1);//{nmae:'jack',age:20}
- 使用扩展运算符实现深拷贝
var obj={name:'bob',age:10}
var obj1={...obj,age:20}
console.log(obj1);//{name:'bob',age:20}