当前位置:首页 > JavaScript

js实现一个浅拷贝

2026-04-05 03:04:28JavaScript

JavaScript 浅拷贝实现方法

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

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

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

方法二:使用 Object.assign()

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

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

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

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

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

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

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

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

js实现一个浅拷贝

注意事项

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

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

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
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…