js深拷贝和浅拷贝

浅拷贝:
  在有指针的情况下,浅拷贝只是增加一个指针,指向已经存在的内存。

深拷贝:

  增加一个指针并且申请一个新内存,使这个增加的指针指向新的内存。


  采用深拷贝,释放内存时就不会出现在浅拷贝时重复释放同一个内存的错误。


实例:

//被改变 - 引用类型是对象
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 没有被改变,因为引用数组类型是值
原文地址:https://www.cnblogs.com/daysme/p/6288799.html