js实现深拷贝的一些方法
Posted 兔子先生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
参考地址:
https://www.cnblogs.com/echolun/p/7889848.html
https://www.cnblogs.com/myzy/p/8561353.html
以上是关于js实现深拷贝的一些方法的主要内容,如果未能解决你的问题,请参考以下文章