JavaScript高级 面向对象(7)--深拷贝与浅拷贝

说明(2017.3.31):

1. 画图:

1     var car = {name:"法拉利"};
2     var p = {name: "张三", age: "19", car: car};

1     // var pCopy = p;这个不是拷贝,没有对对象做任何拷贝行为
2     var pCopy = {};
3     pCopy.name = p.name;
4     pCopy.age = p.age;
5     pCopy.car = p.car;

 2. 什么是深拷贝,什么是浅拷贝:

  深拷贝:拷贝的时候,将数据的所有引用都拷贝一份。

  浅拷贝:拷贝的时候,只对属性进行拷贝。

  拷贝:复制一份,指将对象数据复制。(var pCopy = p这个不是拷贝,只是复制了引用)

  深拷贝与浅拷贝的区别就是,拷贝完之后,里面的引用类型是否是独立的一份!

1     var pCopy = {};
2     pCopy.name = p.name;
3     pCopy.age = p.age;
4     pCopy.car = {};
5     pCopy.car.name = car.name
6     // 下面两行是验证深拷贝之后,修改备份的引用类型的值,是否会改变原引用的值
7     pCopy.car.name = 123;
8     console.log(car.name);

原文地址:https://www.cnblogs.com/Jacklovely/p/6650287.html