JavaScript深拷贝和浅拷贝的区别

Posted 过往将来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript深拷贝和浅拷贝的区别相关的知识,希望对你有一定的参考价值。

javascript基本数据类型

  1. 基本数据类型,number,string,boolean,null,undefined,symbol六类。
  2. 引用数据类型为对象,数组,函数
  3. S有2个不包含任何值的数据类型:null,undefined

不同数据类型的存储方式

  1. 基本数据类型 保存在 栈内存,形式如下:栈内存中分别存储着变量的标识符以及变量的值。

在这里插入图片描述

  1. 引用类型 保存在 堆内存 中, 栈内存存储的是变量的标识符以及对象在堆内存中的存储地址,当需要访问引用类型(如对象,数组等)的值时,首先从栈中获得该对象的地址指针,然后再从对应的堆内存中取得所需的数据。

在这里插入图片描述

深拷贝简介

  1. 深拷贝是对,深拷贝不仅是对指针进行拷贝而且还对内容进行拷贝,拷贝完成后,指正指向的地址不一样,但是值是一样的。

浅拷贝简介

  1. 浅拷贝是对指针进行拷贝,拷贝后两个指针指向同一块内存空间。C++中如果不定义类的复制构造函数,就会调用类的默认复制构造函数,而类的复制构造函数是浅拷贝。

以上是关于JavaScript深拷贝和浅拷贝的区别的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript深拷贝和浅拷贝的区别

如何实现数组深拷贝和浅拷贝?

JavaScript深拷贝和浅拷贝

javascript深拷贝和浅拷贝以及实现方法(推荐)

深拷贝和浅拷贝的区别?

JavaScript中的深拷贝和浅拷贝到底是什么