JavaScript中深拷贝和浅拷贝的区别是什么?

2026-04-01 16:581阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2168个文字,预计阅读时间需要9分钟。

JavaScript中深拷贝和浅拷贝的区别是什么?

一、准备知识

1.1 JS数据类型

基本数据类型:Boolean、String、Number、null、undefined引用数据类型:Object、Array、Function、RegExp、Date等

1.2 数据类型的复制基本数据类型的复制是按值复制,即复制的是数据的值。

一、预备知识

1.1、JS数据类型

基本数据类型:Boolean、String、Number、null、undefined
引用数据类型:Object、Array、Function、RegExp、Date等

1.2、数据类型的复制

基本数据类型的复制,是按值传递的

var a = 1; var b = a; b = 2; console.log(a); // 1 console.lob(b); // 2

引用数据类型的复制,是按引用传值

var obj1 = { a: 1; b: 2; }; var obj2 = obj1; obj2.a=3; console.log(obj1.a); //3 console.log(obj2.a); // 3

1.3、深拷贝与浅拷贝

深拷贝和浅拷贝都只针对引用数据类型,浅拷贝会对对象逐个成员依次拷贝,但只复制内存地址,而不复制对象本身,新旧对象成员还是共享同一内存;深拷贝会另外创建一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。

区别:浅拷贝只复制对象的第一层属性,而深拷贝会对对象的属性进行递归复制。

阅读全文

本文共计2168个文字,预计阅读时间需要9分钟。

JavaScript中深拷贝和浅拷贝的区别是什么?

一、准备知识

1.1 JS数据类型

基本数据类型:Boolean、String、Number、null、undefined引用数据类型:Object、Array、Function、RegExp、Date等

1.2 数据类型的复制基本数据类型的复制是按值复制,即复制的是数据的值。

一、预备知识

1.1、JS数据类型

基本数据类型:Boolean、String、Number、null、undefined
引用数据类型:Object、Array、Function、RegExp、Date等

1.2、数据类型的复制

基本数据类型的复制,是按值传递的

var a = 1; var b = a; b = 2; console.log(a); // 1 console.lob(b); // 2

引用数据类型的复制,是按引用传值

var obj1 = { a: 1; b: 2; }; var obj2 = obj1; obj2.a=3; console.log(obj1.a); //3 console.log(obj2.a); // 3

1.3、深拷贝与浅拷贝

深拷贝和浅拷贝都只针对引用数据类型,浅拷贝会对对象逐个成员依次拷贝,但只复制内存地址,而不复制对象本身,新旧对象成员还是共享同一内存;深拷贝会另外创建一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。

区别:浅拷贝只复制对象的第一层属性,而深拷贝会对对象的属性进行递归复制。

阅读全文