js拷贝对象方法是什么

在JavaScript中,拷贝对象是一项常见的操作,对象拷贝可以用于创建对象的副本,避免对原始对象的意外修改,本文将详细介绍几种常用的JavaScript对象拷贝方法,并提供示例代码和解析。

js拷贝对象方法是什么
(图片来源网络,侵删)

1、使用对象字面量进行浅拷贝

对象字面量是一种简单的对象创建方式,可以通过字面量直接创建一个新的对象,通过将原始对象的属性赋值给新对象,可以实现浅拷贝

示例代码:

const obj1 = { a: 1, b: 2, c: { d: 3 } };
const obj2 = { ...obj1 }; // 使用对象字面量进行浅拷贝
obj2.a = 4;
console.log(obj1); // 输出:{ a: 1, b: 2, c: { d: 3 } }
console.log(obj2); // 输出:{ a: 4, b: 2, c: { d: 3 } }

在上述示例中,我们使用了扩展运算符(…)来展开原始对象的属性,并创建了一个新的对象obj2,修改obj2的属性a并不会影响原始对象obj1

2、使用Object.assign()进行浅拷贝

Object.assign()方法可以将一个或多个源对象的可枚举属性复制到目标对象中,如果目标对象中存在相同的属性,则会被源对象的属性覆盖。

示例代码:

const obj1 = { a: 1, b: 2, c: { d: 3 } };
const obj2 = Object.assign({}, obj1); // 使用Object.assign()进行浅拷贝
obj2.b = 4;
console.log(obj1); // 输出:{ a: 1, b: 2, c: { d: 3 } }
console.log(obj2); // 输出:{ a: 1, b: 4, c: { d: 3 } }

在上述示例中,我们使用Object.assign()方法将原始对象obj1的属性复制到新对象obj2中,修改obj2的属性b并不会影响原始对象obj1

需要注意的是,以上两种方法都是浅拷贝,即只拷贝对象的第一层属性,如果对象的属性值是引用类型(如对象、数组),则拷贝的是引用地址,修改拷贝后的对象的属性值会影响到原始对象。

3、使用JSON.parse()JSON.stringify()进行深拷贝

JSON.stringify()方法可以将JavaScript对象转换为JSON字符串,而JSON.parse()方法可以将JSON字符串解析为JavaScript对象,通过结合这两个方法,可以实现对象的深拷贝

示例代码:

const obj1 = { a: 1, b: 2, c: { d: 3 } };
const obj2 = JSON.parse(JSON.stringify(obj1)); // 使用JSON.parse()和JSON.stringify()进行深拷贝
obj2.c.d = 4;
console.log(obj1); // 输出:{ a: 1, b: 2, c: { d: 3 } }
console.log(obj2); // 输出:{ a: 1, b: 2, c: { d: 4 } }

在上述示例中,我们使用JSON.stringify()方法将原始对象obj1转换为JSON字符串,然后使用JSON.parse()方法将JSON字符串解析为新对象obj2,修改obj2的嵌套属性c.d并不会影响原始对象obj1

需要注意的是,JSON.parse()JSON.stringify()方法虽然可以实现对象的深拷贝,但是有一些限制,它们不能处理循环引用、函数、正则表达式等特殊对象。

本文介绍了三种常用的JavaScript对象拷贝方法:使用对象字面量进行浅拷贝、使用Object.assign()进行浅拷贝和使用JSON.parse()JSON.stringify()进行深拷贝,根据实际需求选择合适的方法进行对象拷贝,可以避免对原始对象的意外修改。

原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/308377.html

(0)
酷盾叔的头像酷盾叔订阅
上一篇 2024-03-04 19:32
下一篇 2024-03-04 19:35

相关推荐

  • es6解构赋值是浅拷贝(es6对象解构赋值作为参数)

    ES6解构赋值是浅拷贝,这意味着当对象被解构时,原始对象和新对象共享相同的引用。

    2024-05-17
    087
  • js拷贝函数怎么操作

    在JavaScript中,拷贝函数通常是指创建一个现有对象的副本,这样做的目的是避免直接操作原始对象,从而防止意外修改它,根据需要拷贝的内容和深度,有多种方法可以执行此操作,以下是一些常用的拷贝函数操作方法:1、浅拷贝(Shallow Copy): 使用Object.assign()方法: “`javascript const ob……

    2024-03-04
    0123
  • js 深拷贝浅拷贝怎么操作

    在JavaScript中,拷贝对象是一个常见的操作,根据拷贝的深度,我们可以将拷贝分为浅拷贝和深拷贝。浅拷贝:创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝,如果属性是基本类型,拷贝的就是基本类型的值;但如果属性是引用类型,拷贝的就是内存地址(即引用)的一份拷贝,如果其中一个对象改变了引用类型的属性,另一个对象的该属性也会受……

    2024-03-04
    095
  • js浅拷贝和深拷贝的方法

    在JavaScript中,对象的拷贝分为深拷贝和浅拷贝,浅拷贝只复制对象的第一层属性,而深拷贝会递归地复制对象的所有层级的属性,本回答将详细介绍如何进行对象的浅拷贝操作。浅拷贝的基本概念浅拷贝意味着创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝,如果原始对象的属性是基本类型(如数字、字符串、布尔值等),那么浅拷贝的就是这些值……

    2024-03-04
    0105

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

免费注册
电话联系

400-880-8834

产品咨询
产品咨询
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入