说明(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);