专栏名称: 程序员好物馆
成就一亿技术人
今天看啥  ›  专栏  ›  程序员好物馆

structuredClone():JavaScript中深拷贝对象的最简单方法

程序员好物馆  · 公众号  ·  · 2024-08-06 09:00

主要观点总结

文章介绍了structuredClone()这个新方法在JavaScript中的用途和优势,它解决了深度复制对象的痛点,并能轻松处理循环引用。文章还提到了structuredClone()的一些限制,如无法克隆函数或方法、DOM元素和RegExp的lastIndex属性等。

关键观点总结

关键观点1: structuredClone()的用途和优势

structuredClone()是一种简单高效的方法,可以深度复制任何对象,解决了一直以来没有内置的完美深度复制对象的方法的问题。

关键观点2: structuredClone()处理循环引用的能力

structuredClone()能够轻松克隆包含循环引用的对象。

关键观点3: structuredClone()的限制

structuredClone()有一些重要弱点,如无法克隆函数或方法、DOM元素,不保留RegExp的lastIndex属性等。

关键观点4: 关于部分克隆和部分移动的复杂情况

使用structuredClone()时,存在将内部对象从源对象转移到克隆对象的情况,而不是进行复制。


文章预览

作者 | dev 来源 | 大迁世界 深拷贝是传递或存储数据时的一项常规编程任务。 浅拷贝:只复制对象的第一层 深拷贝:复制对象的所有层级 const obj = { name:  'Tari' , friends: [{ name:  'Messi'  }] }; const shallowCopy = { ...obj }; const deepCopy = dCopy(obj); console.log(obj.friends === shallowCopy.friends); // ❌  true console.log(obj.friends === deepCopy.friends); // ✅  false 但一直以来,我们都没有一种内置的方法来完美地深度复制对象,这一直是一个痛点。 我们总是不得不依赖第三方库来进行深度复制并保留循环引用。 现在,这一切都因新的 structuredClone() 而改变了——它是一种简单高效的方法,可以深度复制任何对象。 const obj = { name:  'Tari' , friends: [{ name:  'Messi'  }] }; const clonedObj = structuredClone(obj); console.log(obj.name === clonedObj); //  false console.log(obj.friends === clo ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览