浅拷贝 ||深拷贝

浅拷贝 ||深拷贝
定义:假如 B复制了A ,当修改A时,看B 是否发生变化,如果B发生变化 则其为浅拷贝 ,若 B 未发生变化,则深拷贝
基本数据类型:名字和值都会在栈内存;
引用了类型:名字在栈内存,值堆内存,栈内存会提供一个引用地址指向堆内存中的值;
在这里插入图片描述
实现浅拷贝方法:
1.for … in 只循环第一层;
2.Object.assign()方法;

var obj = {
    
     a: 1,b: 2}
var obj1 = Object.assign(obj);
obj1.a = 3;
console.log(obj.a) // 3

实现深拷贝方法;
1.通过递归去拷贝所有层级属性;
2.通过JSON 对象来实现深拷贝; 缺点就是无法实现的对象的深拷贝,就会显示undefined

function deepClone2(obj) {
    
    
  var _obj = JSON.stringify(obj),
    objClone = JSON.parse(_obj);
  return objClone;
}

3.用concat实现对数组的深拷贝
4.使用扩展运算符实现深拷贝

猜你喜欢

转载自blog.csdn.net/weixin_45103130/article/details/123531452