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实现深拷贝的一些方法的主要内容,如果未能解决你的问题,请参考以下文章

JS 中深拷贝的几种实现方法

JS的深拷贝/浅拷贝

JS实现深拷贝

前端面试之js 中常见的深拷贝的方法

js实现深拷贝

JS 原生方法原理探究如何实现浅拷贝和深拷贝?