从JavaScript角度谈谈深拷贝与浅拷贝

如何区分深拷贝与浅拷贝,举个例子来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝;如果B没变,那就是深拷贝。在JavaScript中如果要解释这两种拷贝方式,就得先说说其数据类型了。

一、JavaScript的的数据类型大体上来讲有基本类型和引用类型,他们各自又分别有以下的几种:

1、基本类型:string、number、symbol、null、undefined、BigInt、boolean
2、引用类型:数组、对象、函数等

二、基本类型和引用类型的是如何存储的

1、基本类型存储:名和值都是存在栈内存中的,所以进行复制时会开辟一个新的内存空间;
当修改复制的新变量时,旧变量不受影响,称之为深拷贝。

在这里插入图片描述
2、引用类型存储:名是存储在栈内存中的,但值是存储在堆内存中,栈中的地址指向堆中的值;
当复制该变量时,只是在栈中开辟一个内存来放置新变量的名,但栈中的地址还是指向旧变量指向的堆的值,所以进行修改新变量或旧变量的值时,他们的值会互相影响,称之为浅拷贝

在这里插入图片描述

发布了60 篇原创文章 · 获赞 20 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览