structuredClone是 JavaScript 内置的深拷贝方法,基于结构化克隆算法,用于复制复杂对象(如包含嵌套对象、数组、Date、Map、Set 等类型的数据),并支持处理循环引用。它替代了传统的JSON.parse(JSON.stringify())深拷贝方法,解决了后者无法复制特殊对象和丢失数据类型的问题。 2. 语法 structuredClone(value) structuredClone...
kitchenSink.circular=kitchenSink const clonedSink= structuredClone(kitchenSink) structuredClone可以做到: 拷贝无限嵌套的对象和数组 拷贝循环引用 拷贝各种各样的 JavaScript 类型,如Date、Set、Map、Error、RegExp、ArrayBuffer、Blob、File、ImageData等 哪些不能拷贝: 函数 DOM 节点 属性描述、setter和getter 对象原...
值得庆幸的是 structuredClone 在所有主流浏览器中都受支持,也支持Node.js和Deno。 图片 最后 我们现在终于可以直接使用原生JavaScript中的structuredClone能力实现深度拷贝对象。每种方式都有其优缺点,具体使用方式取决于你的需求和目标对象的类型。 参考 Deep Cloning Objects in JavaScript, the Modern Way(www.builder....
在现代浏览器中,可以使用structuredClone方法来实现深拷贝,它是一种更高效、更安全的深拷贝方式。 以下是一个示例代码,演示如何使用structuredClone进行深拷贝: const kitchenSink = {set: new Set([1, 3, 3]),map: new Map([[1, 2]]),regex: /foo/,deep: { array: [ new File(someBlobData, 'file...
在JavaScript中,实现深拷贝的方式有很多种,每种方式都有其优点和缺点。今天介绍一种原生JavaScript提供的structuredClone实现深拷贝。 下面列举一些常见的方式,以及它们的代码示例和优缺点: 1. 使用JSON.parse(JSON.stringify(obj)) 代码示例: function deepClone(obj) { ...
代码语言:javascript 代码运行次数:0 运行 AI代码解释 {"set":{},"map":{},"regex":{},"deep":{"array":[{}]},"error":{},} 可以看到, 这种方法的拷贝出错了。 因此,如果我们的需求适合这个方法,可以用这个方法。但是,我们可以用structuredClone做这个方法有很多不能做的事情。
); const transferred = structuredClone(uInt8Array, { transfer: [uInt8Array.buffer], }); console.log(uInt8Array.byteLength); // 0 总的来说,structuredClone()是 JavaScript 开发者工具箱中的一个宝贵补充,使对象克隆比以往任何时候都更容易。
长久以来,我们必须借助于变通方式和库来深拷贝一个 JavaScript 值。现在 Web 平台附带了 structuredClone() ,这是一个用于深拷贝的内置函数。目前主流浏览器的最新版均已实现了此 API,Firefox 94,Chrome 98 已支持。此外,Node 17 和 Deno 1.14 也已实现了此 API。我们现在就可以放心使用这个函数了,不用...
使用structuredClone 进行深拷贝 原生structuredClone()方法使用结构化克隆算法创建给定值的深层拷贝。 结构化克隆算法用于复制复杂 JavaScript 对象的算法。通过来自 Worker 的postMessage()或使用IndexedDB存储对象时在内部使用。它通过递归输入对象来构建克隆,同时保持先前访问过的引用的映射,以避免无限遍历循环。
JavaScript 中 structuredClone 和 JSON.parse(JSON.stringify()) 克隆对象的异同点 一、什么是 structuredClone? 1. structuredClone 的发展 structuredClone是在ECMAScript2021(ES12)标准中引入的,ECMAScript2021 规范正式发布于 2021 年 6 月 自2022 年 3 月起,该功能适用于最新的设备和浏览器版本 ...