js 实现深拷贝
在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