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...
值得庆幸的是structuredClone在所有主流浏览器中都受支持,也支持 Node.js 和 Deno。 结语 我们现在终于可以直接使用原生 JavaScript 中的structuredClone能力实现深度拷贝对象。每种方式都有其优缺点,具体使用方式取决于你的需求和目标对象的类型。
};// 创建循环引用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(),/...
function deepClone(obj) { return _.cloneDeep(obj); } 优点:支持更多类型的对象和库,例如,支持 Proxy 对象。 缺点:会引入依赖导致项目体积增大。 因为这个函数会导致17.4kb的依赖引入,如果只是引入lodash会更高。 4. 现代深拷贝structuredClone 在现代浏览器中,可以使用structuredClone方法来实现深拷贝,它是一种更...
structuredClone 闪耀登场~ 很多人会用 JSON.parse(JSON.stringify(obj))来对对象进行深拷贝操作,但是这个方式缺点太多了。 原生的深拷贝~ 分享一个 JavaScript 原生的深拷贝方法 structuredClone,其实这个方法出了很久了,但是存在感一直很低~ 图片 说这个方法前,我们先来讨论一下,常见的深拷贝都有哪些方案呢?
1. 为什么需要 StructuredClone 下面是一个使用 StructuredClone 方法克隆对象的示例:const calendarEvent = { title: "Builder.io Conf", date: new Date(123), attendees: ["Steve"]}// 赋值对象const copied = structuredClone(calendarEvent)以上代码示例表明,StructuredClone 不仅可以复制对象,还可以复制...
structuredClone(value) structuredClone(value, { transfer }) 2.2. 参数 value:被克隆的对象 transfer:可转移的数组 2.3. 返回值 返回值是原始值的深拷贝 2.4. 如果输入值的任一部分不可序列化,则抛出DataCloneError异常 3. 用法 3.1. 普通用法 const obj = { ...
它实际上是一个很棒的工具,性能令人惊讶,但也有一些structuredClone可以解决的缺点。 举个例子: 代码语言:javascript 代码运行次数:0 复制 Cloud Studio代码运行 constcalendarEvent={title:"前端修罗场",date:newDate(123),attendees:["Steve"]}constproblematicCopy=JSON.parse(JSON.stringify(calendarEvent)) ...
我们现在终于可以直接使用原生JavaScript中的structuredClone能力实现深度拷贝对象。每种方式都有其优缺点,具体使用方式取决于你的需求和目标对象的类型。 在JavaScript中,实现深拷贝的方式有很多种,每种方式都有其优点和缺点。今天介绍一种原生JavaScript提供的structuredClone实现深拷贝。
啊,是的,这个技巧。实际上这是一个很好的方法,而且出人意料地高效,但structuredClone解决了它的一些缺点。 以此为例: const calendarEvent = { title: "Builder.io大会", date: new Date(123), attendees: ["Steve"] } // 🚩 JSON.stringify 将`date`转换为了字符串 ...