浅拷贝:
在有指针的情况下,浅拷贝只是增加一个指针,指向已经存在的内存。
深拷贝:
增加一个指针并且申请一个新内存,使这个增加的指针指向新的内存。
采用深拷贝,释放内存时就不会出现在浅拷贝时重复释放同一个内存的错误。
实例:
//被改变 - 引用类型是对象 var arr=[1,2,3,4,5] var arr1=arr; console.log(arr) arr1[1]=6; //原arr已被改变 console.log(arr) //原arr已被改变
//没有被改变 - 使用一些方法完全复制 //利用 arr.slice(0) 或 arr.concat() 完整创建一个新数组 var arr=[1,2,3,4,5] var arr1=arr.slice(0); console.log(arr) arr1[1]=6; //原arr没有改变 console.log(arr) //原arr没有改变
//没有被改变- 数据类型是值还不是对象的时候 //引用数据类型是直接是一个值的情况下没有浅拷贝和深拷贝之分 //但是对象有 //非对象的变量和内存直接放在同一内存中,没有指针一说 var arr=1; var arr1=arr; arr1=10; console.log(arr); //1 没有被改变,因为引用数组类型是值