有时候我们需要修改新对象的值,但是不改变原有变量的值也就是深拷贝, 对象是引用数据类型,所以一般都是浅拷贝,所以,想要实现深拷贝 就需要用到另一种方法 注意:这种方法只适用于被拷贝对象中全部都是基本数据类型的情况 让p1和p2指向的地址不同即可,那样修改p2的值就不会影响到p1,但是一般对象之间的赋值只是赋值地址指向,但是在Object中有一个assing的方法,它可以将p1所指向的对象中所有属性和值赋值给p2,代码如下:
这样,就完成了对象的拷贝,原理就是让p2指向一个空白的对象,然后通过assign的方法 将别的对象中的属性全部拷贝到现在的对象中,再进行修改就不会影响到原有变量的值;
真正意义上的对象深拷贝: 代码如下:
这种方法是采用递归的方法实现的对象深拷贝,实现步骤如下 先实例化两个对象,分别为p1(被拷贝对象),p2(空对象);
先使用高级for循环将p1(被拷贝对象)中的元素依次取出并赋值给 p1value,之后用p1value是否指向object判断p1value中是否是对象 或者数组,如果是的话,先将p1value的constructor赋值给p2value, 也就是说p2value中将被赋值一个空对象或者数组,再将p2value的 值赋给p2[key],然后采用递归的方法,自身调用自身,将对象或者 数组中的值取出并赋值,从而实现对象深拷贝