在ECMAScript变量中包含两种不同类型的值:基本类型值和引用类型值。
基本类型值:Undefined、Null、Boolean、Number、String
引用类型值:Object、Array、函数等
基本类型一般就是浅拷贝,引用类型是深拷贝
简单点来说,声明一个数组A、然后将其赋值给B、当修改B的值时,如果A的值没有变化,说明它是深拷贝,如果A的值一起改变了,那它就是浅拷贝了。
但需要注意的是:引用类型,如果往深一点讲,也是分浅拷贝和深拷贝,比如数组,涉及二维三维数组。
下面的方法,只是实现一维的深拷贝。
实现一维数组深拷贝的一些方法:
1.使用ES6的语法
var a=[1,2,3] var [...b]=a;//或b=[...a] b.push(4); console.log(b);//1,2,3,4 console.log(a)//1,2,3
2.使用concat()方法
var a=[1,2,3] var c=[]; var b=c.concat(a); b.push(4); console.log(b);//1,2,3,4 console.log(a)//1,2,3
3.使用slice()方法
var a=[1,2,3] var b=a.slice(0); b.push(4); console.log(b);//1,2,3,4 console.log(a)//1,2,3
4.使用JSON对象的stringify和parse方法
var a=[1,2,3] var c=JSON.stringify(a); var b=JSON.parse(c); b.push(4); console.log(b);//1,2,3,4 console.log(a)//1,2,3
参考地址:
https://www.cnblogs.com/echolun/p/7889848.html
https://www.cnblogs.com/myzy/p/8561353.html