当前位置:首页 > JavaScript

js实现一个浅拷贝

2026-04-05 03:04:28JavaScript

JavaScript 浅拷贝实现方法

方法一:使用展开运算符(Spread Operator)

const original = { a: 1, b: { c: 2 } };
const copy = { ...original };

展开运算符会复制对象的所有可枚举自有属性到新对象中。对于嵌套对象,只复制引用而非创建新对象。

js实现一个浅拷贝

方法二:使用 Object.assign()

const original = { a: 1, b: { c: 2 } };
const copy = Object.assign({}, original);

Object.assign() 将源对象的所有可枚举属性复制到目标对象并返回目标对象。同样只处理第一层属性的拷贝。

js实现一个浅拷贝

方法三:数组浅拷贝(slice 方法)

const originalArray = [1, 2, { a: 3 }];
const copiedArray = originalArray.slice();

数组的 slice() 方法不带参数时,会返回原数组的浅拷贝副本。对于数组中的对象元素,同样只复制引用。

方法四:数组浅拷贝(concat 方法)

const originalArray = [1, 2, { a: 3 }];
const copiedArray = [].concat(originalArray);

空数组与原始数组的 concat 操作会生成新的数组副本,实现浅拷贝效果。

注意事项

  • 浅拷贝只复制对象的第一层属性
  • 嵌套对象仍然保持引用关系
  • 修改拷贝对象的嵌套属性会影响原对象
  • 适用于简单数据结构或明确不需要深拷贝的场景

浅拷贝与深拷贝的区别示例

const original = { a: 1, b: { c: 2 } };
const shallowCopy = { ...original };

// 修改第一层属性
shallowCopy.a = 3; // 不影响原对象
console.log(original.a); // 输出 1

// 修改嵌套属性
shallowCopy.b.c = 4; // 影响原对象
console.log(original.b.c); // 输出 4

这个示例清晰地展示了浅拷贝对第一层属性和嵌套属性的不同处理方式。

标签: js
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…