值得庆幸的是structuredClone在所有主流浏览器中都受支持,也支持 Node.js 和 Deno。 结语 我们现在终于可以直接使用原生 JavaScript 中的structuredClone能力实现深度拷贝对象。每种方式都有其优缺点,具体使用方式取决于你的需求和目标对象的类型。
constobj={func:function(){return"I'm a function";},// 函数symbol:Symbol('uniqueSymbol'),// SymbolweakMap:newWeakMap(),// WeakMapweakSet:newWeakSet(),// WeakSetelement:document.createElement('div')// HTMLElement};// 尝试克隆对象try{constclonedObj=structuredClone(obj);console.log(clonedObj...
};// 创建循环引用obj.circularRef.self= obj;// 克隆 obj 对象constclonedObj =structuredClone(obj, {transfer: [port1]});// 输出以验证console.log(clonedObj); constobj = {func:function() {return"I'm a function"; },// 函数symbol:Symbol('uniqueSymbol'),// SymbolweakMap:newWeakMap(),/...
window.structuredClone 全局的 structuredClone() 方法使用结构化克隆算法将给定的值进行深拷贝 图片 图片 当克隆Function、Dom节点时,会报错 图片 图片 其他数据类型可以成功拷贝~ 图片
在现代浏览器中,可以使用structuredClone方法来实现深拷贝,它是一种更高效、更安全的深拷贝方式。 以下是一个示例代码,演示如何使用structuredClone进行深拷贝: const kitchenSink = { set: new Set([1, 3, 3]), map: new Map([[1, 2]]), regex: /foo/, ...
在现代浏览器中,可以使用structuredClone方法来实现深拷贝,它是一种更高效、更安全的深拷贝方式。 以下是一个示例代码,演示如何使用structuredClone进行深拷贝: const kitchenSink = { set: new Set([1, 3, 3]), map: new Map([[1, 2]]), regex: /foo/, ...
structuredClone(value) structuredClone(value, { transfer }) 2.2. 参数 value:被克隆的对象 transfer:可转移的数组 2.3. 返回值 返回值是原始值的深拷贝 2.4. 如果输入值的任一部分不可序列化,则抛出DataCloneError异常 3. 用法 3.1. 普通用法 const obj = { ...
现在,这一切都因新的structuredClone()而改变了——它是一种简单高效的方法,可以深度复制任何对象。 const obj = { name: 'Tari', friends: [{ name: 'Messi' }] }; const clonedObj = structuredClone(obj); console.log(obj.name === clonedObj); // false ...
它实际上是一个很棒的工具,性能令人惊讶,但也有一些structuredClone可以解决的缺点。 举个例子: 代码语言:javascript 代码运行次数:0 复制 Cloud Studio代码运行 constcalendarEvent={title:"前端修罗场",date:newDate(123),attendees:["Steve"]}constproblematicCopy=JSON.parse(JSON.stringify(calendarEvent)) ...
我们现在终于可以直接使用原生JavaScript中的structuredClone能力实现深度拷贝对象。每种方式都有其优缺点,具体使用方式取决于你的需求和目标对象的类型。 在JavaScript中,实现深拷贝的方式有很多种,每种方式都有其优点和缺点。今天介绍一种原生JavaScript提供的structuredClone实现深拷贝。