# JS原生的深拷贝API structuredClone()

> 我喜欢新的，直接点的...

Author: DeathGhost
Published: 2025-01-25 13:35:28
Category: javascript
Canonical: https://www.deathghost.cn/article/javascript/120
Keywords: JS原生的深拷贝, API, structuredClone(), structuredClone, JSON, JSON.parse(JSON.stringify()), 深拷贝, copy, cloneDeep

通常情况下，深拷贝通过JSON.parse(JSON.stringify())、递归函数、第三方库（如Lodash的cloneDeep方法）等方式实现。

但是，我喜欢新的，它好像更方便点😍...

![structuredClone()方法](https://www.deathghost.cn/public/upload/article/2025/01/25/1737783266028667.jpg)

structuredClone()方法

StructuredClone是 JavaScript 中一项较新的功能，旨在创建对象和数组的深层复制。深层复制意味着原始数据中的每一层嵌套对象或数组都会被递归复制。

structuredClone() 方法使用结构化克隆算法将给定的值进行深拷贝。

该方法还支持把原值中的可转移对象转移（而不是拷贝）到新对象上。可转移对象与原始对象分离并附加到新对象；它们将无法在原始对象中被访问。--MDN 想不出应用场景，暂且不看。

## StructuredClone语法

structuredClone(value, options?)
value 被克隆的对象。

options 可选属性。使用参数 options 的里 transfer 属性，可以使可转移对象（仅）被传递，不被克隆。转移会导致原始对象无法继续使用。

![structuredClone()方法](https://www.deathghost.cn/public/upload/article/2025/01/25/1737783243462450.jpg)

structuredClone()方法

const u = {
  userName: "DeathGhost",
  age: 18,
  url: "https://deathghost.cn",
  birthday: new Date("1986-08-09"),
};
const cloneM_O = JSON.stringify(m);
console.log(`【JSON.】:`, JSON.parse(cloneM_O), "原始对象：", m);
const cloneM_N = structuredClone(m);
cloneM_N.age = 19;
console.log(`【structuredClone】:`, cloneM_N, "原始对象：", m);
console.assert(cloneM_N === m); // demo.html:21 断言失败： console.assert
console.warn(`注意看age属性值...`);
2024年结束了，回头看了看，这一年好像都没有写过前端笔记🤪。上班，每天都在折腾这些；回家了，实在是没欲望继续了...

实在是&ldquo;罪过&rdquo;😥简单的不想写，复杂的懒得写。

今天结束了最后一天的班 &mdash; 放假！只能✨新年快乐✨咯！年后继续...

## Related

- Previous: [Web Worker 简单实例应用](https://www.deathghost.cn/article/javascript/114)
