JavaScript中浅拷贝和深拷贝的区别和实现

IT科技类资讯2025-11-05 09:28:29927

前言

要理解 JavaScript中浅拷贝和深拷贝的中浅区别,首先要明白JavaScript的拷贝拷贝数据类型。JavaScript有两种数据类型,和深基础数据类型和引用数据类型。别和

1. 基础数据类型: undefined、实现boolean、中浅number、拷贝拷贝string、和深null,别和保存在栈内存中的实现简单数据

2. 引用数据类型:Array、对象、中浅Function,拷贝拷贝保存在堆内存空间中

概述

如下图:

注释:

a1 = 0;a2 = this is 和深str;a3 = null,站群服务器 存放在栈内存中;

var c =[1,别和2,3] 与 var d = {m:20} ,**变量名与内存地址存储在栈内存中**,实现**但是**[1,2,3]与{m:20} 作为**对象存储在堆内存中**;

基础数据类型的复制

var a = 20;

var b = a;

如下图:

引用数据类型的复制

var m ={ a:10, b:20};

var n = m;

m与n指向同一个内存空间,当m或者n改变时,另一个也跟着改变

m.a = web秀;

console.log(n.a);

// 输出 web秀

怎么样使引用数据类型有各自独立的内存空间???

深度拷贝方法

采用递归的方法拷贝对象

## 奇技淫巧

利用**基础数据类型**方式,把对象转换成字符串,进行复制。具体点说就是,用JSON.stringify与JSON.parse实现深拷贝。源码库原因是JSON.stringify(obj)转换成字符串,变成基本数据类型,基本类型拷贝是直接在栈内存新开空间,直接复制一份名-值,不影响之前的对象。请看代码:

总结

1. 浅拷贝(shallow copy):只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存;

2. 深拷贝(deep copy):复制并创建一个一摸一样的对象,不共享内存,修改新对象,云服务器旧对象保持不变;

实现深拷贝主要有2种方法

(1)递归

(2)JSON.stringify结合JSON.parse

本文地址:http://www.bzve.cn/news/33f66499302.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

苹果电脑居家使用教程(掌握苹果电脑的基本操作,让您的居家生活更便捷)

从日志到表格,不用导入数据库就能用 SQL 查询

一小时的停机时间会给您带来多少损失?

RAG实战 | 向量数据库LanceDB指南

揭秘浪潮大数据的无限潜力(挖掘、分析、应用,大数据开启新时代)

比DDoS更阴险的CDN攻击:你的静态资源正在被「吸血鬼」式收割

你真的准备好工业 4.0 了吗?

SpringBoot与Calcite整合,实现多数据源统一查询系统

友情链接

滇ICP备2023006006号-39