深度克隆-浅拷贝

深度克隆

​ 克隆其实就是拷贝 就是复制 这是主要是针对引用数据类型来说的 也就是说在底层存储的时候 使用堆栈存储的

​ 我们主要针对的对象是 数组 对象 因为只有他们才是引用类型 堆栈空间存储

​ 拷贝涉及到两种拷贝

1.浅拷贝

​ 浅拷贝指的是 我们在拷贝被对象的时候 只是拷贝对象的地址 不是拷贝存储

​ 等同于给一个人去两个名字 那么当一个发生改变的时候 另一个也会收到影响

// 浅拷贝
let obj = {name : 'Eric','age' : 18,sex : '男',arr : [33,66,99],friend : {name : 'MM',age : 17}};
// let arr = [22,44,66,88];
let data = [
    // 22,44,66,88,
    {name : 'Eric','age' : 18,sex : '男'},
    {name : 'Mary','age' : 16,sex : '女'},
    [22,44,66,88]
];

// 对对象进行浅拷贝
// let newObj = obj;
// console.log(obj);
// console.log(newObj);

// newObj.school = '吉林大学';
// console.log(obj);
// console.log(newObj);

// 浅拷贝模式之...
// let newArr = [...arr];
// console.log(arr);
// console.log(newArr);
// newArr.push(99);
// console.log(arr);
// console.log(newArr);
// let newData = [...data];
// console.log(data);
// console.log(newData);
// newData[4].school = '吉林大学';
// console.log(data);
// console.log(newData);

// 浅拷贝之JSON
// let str = JSON.stringify(data);
// let newData = JSON.parse(str);
// console.log(data);
// console.log(newData);
// newData.push({name : 'Jack','age' : 22,sex : '男'});
// console.log(data);
// console.log(newData);
// newData[2].push(99);
// console.log(data);
// console.log(newData);
// newData[0].school = '吉林大学';
// console.log(data);
// console.log(newData);

// let str = JSON.stringify(obj);
// let newObj = JSON.parse(str);
// console.log(obj);
// console.log(newObj);
// newObj.arr.push(88);
// console.log(obj);
// console.log(newObj);
// obj.friend.sex = '女';
// console.log(obj);
// console.log(newObj);

你可能感兴趣的:(ES6,浅拷贝,es6)