原生的深拷贝~
分享一个 JavaScript 原生的深拷贝方法 structuredClone,其实这个方法出了很久了,但是存在感一直很低~9MQ28资讯网——每日最新资讯28at.com
图片9MQ28资讯网——每日最新资讯28at.com
说这个方法前,我们先来讨论一下,常见的深拷贝都有哪些方案呢?9MQ28资讯网——每日最新资讯28at.com
JSON.parse & JSON.stringify()
很多人会用 JSON.parse(JSON.stringify(obj))来对对象进行深拷贝操作,但是这个方式缺点太多了9MQ28资讯网——每日最新资讯28at.com
图片9MQ28资讯网——每日最新资讯28at.com
图片9MQ28资讯网——每日最新资讯28at.com
可以看到很多数据类型都没有深拷贝成功9MQ28资讯网——每日最新资讯28at.com
数据类型9MQ28资讯网——每日最新资讯28at.com | 克隆结果9MQ28资讯网——每日最新资讯28at.com |
number9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
string9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
undefined9MQ28资讯网——每日最新资讯28at.com | ✖9MQ28资讯网——每日最新资讯28at.com |
null9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
boolean9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
object9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Array9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Function9MQ28资讯网——每日最新资讯28at.com | ✖9MQ28资讯网——每日最新资讯28at.com |
map9MQ28资讯网——每日最新资讯28at.com | ✖9MQ28资讯网——每日最新资讯28at.com |
Set9MQ28资讯网——每日最新资讯28at.com | ✖9MQ28资讯网——每日最新资讯28at.com |
Date9MQ28资讯网——每日最新资讯28at.com | ✖9MQ28资讯网——每日最新资讯28at.com |
Error9MQ28资讯网——每日最新资讯28at.com | ✖9MQ28资讯网——每日最新资讯28at.com |
Regex9MQ28资讯网——每日最新资讯28at.com | ✖9MQ28资讯网——每日最新资讯28at.com |
Dom节点9MQ28资讯网——每日最新资讯28at.com | ✖9MQ28资讯网——每日最新资讯28at.com |
并且在对象具有环引用的情况下,这种深拷贝方式会导致报错9MQ28资讯网——每日最新资讯28at.com
图片9MQ28资讯网——每日最新资讯28at.com
图片9MQ28资讯网——每日最新资讯28at.com
lodash.cloneDeep
lodash 的 cloneDeep也是深拷贝的手段之一,且非常完善,能成功拷贝各种数据类型9MQ28资讯网——每日最新资讯28at.com
但是大家要注意使用 lodash 时要使用 lodash-es,这样才能做到按需加载,减少不必要的代码体积9MQ28资讯网——每日最新资讯28at.com
图片9MQ28资讯网——每日最新资讯28at.com
图片9MQ28资讯网——每日最新资讯28at.com
数据类型9MQ28资讯网——每日最新资讯28at.com | 克隆结果9MQ28资讯网——每日最新资讯28at.com |
number9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
string9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
undefined9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
null9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
boolean9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
object9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Array9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Function9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
map9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Set9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Date9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Error9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Regex9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Dom节点9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
window.structuredClone
全局的 structuredClone() 方法使用结构化克隆算法将给定的值进行深拷贝9MQ28资讯网——每日最新资讯28at.com
图片9MQ28资讯网——每日最新资讯28at.com
图片9MQ28资讯网——每日最新资讯28at.com
当克隆Function、Dom节点时,会报错9MQ28资讯网——每日最新资讯28at.com
图片9MQ28资讯网——每日最新资讯28at.com
图片9MQ28资讯网——每日最新资讯28at.com
其他数据类型可以成功拷贝~9MQ28资讯网——每日最新资讯28at.com
图片9MQ28资讯网——每日最新资讯28at.com
数据类型9MQ28资讯网——每日最新资讯28at.com | 克隆结果9MQ28资讯网——每日最新资讯28at.com |
number9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
string9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
undefined9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
null9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
boolean9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
object9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Array9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Function9MQ28资讯网——每日最新资讯28at.com | ✖9MQ28资讯网——每日最新资讯28at.com |
map9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Set9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Date9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Error9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Regex9MQ28资讯网——每日最新资讯28at.com | ✔9MQ28资讯网——每日最新资讯28at.com |
Dom节点9MQ28资讯网——每日最新资讯28at.com | ✖9MQ28资讯网——每日最新资讯28at.com |
9MQ28资讯网——每日最新资讯28at.com
本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-87254-0.htmlJavaScript 原生深拷贝方法来啦!structuredClone 闪耀登场~
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: 解密 Python 的变量和对象,它们之间有什么区别和联系呢?
下一篇: 不知道这些不要说玩转了Controller接口