JavaScript 原生深拷贝方法来啦!structuredClone 闪耀登场~

开发 前端
很多人会用 JSON.parse(JSON.stringify(obj))来对对象进行深拷贝操作,但是这个方式缺点太多了。

原生的深拷贝~

分享一个 JavaScript 原生的深拷贝方法 structuredClone,其实这个方法出了很久了,但是存在感一直很低~

图片图片

说这个方法前,我们先来讨论一下,常见的深拷贝都有哪些方案呢?

JSON.parse & JSON.stringify()

很多人会用 JSON.parse(JSON.stringify(obj))来对对象进行深拷贝操作,但是这个方式缺点太多了

图片图片

图片图片

可以看到很多数据类型都没有深拷贝成功

数据类型

克隆结果

number

string

undefined

null

boolean

object

Array

Function

map

Set

Date

Error

Regex

Dom节点

并且在对象具有环引用的情况下,这种深拷贝方式会导致报错

图片图片

图片图片

lodash.cloneDeep

lodash 的 cloneDeep也是深拷贝的手段之一,且非常完善,能成功拷贝各种数据类型

但是大家要注意使用 lodash 时要使用 lodash-es,这样才能做到按需加载,减少不必要的代码体积

图片图片

图片图片

数据类型

克隆结果

number

string

undefined

null

boolean

object

Array

Function

map

Set

Date

Error

Regex

Dom节点

window.structuredClone

全局的 structuredClone() 方法使用结构化克隆算法将给定的值进行深拷贝

图片图片

图片图片

当克隆Function、Dom节点时,会报错

图片图片

图片图片

其他数据类型可以成功拷贝~

图片图片

数据类型

克隆结果

number

string

undefined

null

boolean

object

Array

Function

map

Set

Date

Error

Regex

Dom节点

责任编辑:武晓燕 来源: 前端之神
相关推荐

2024-08-02 08:43:24

JavaScript开发者工具箱深拷贝

2024-03-04 08:45:30

JavaScript深度拷贝对象

2017-05-24 11:54:55

Javascript深拷贝

2023-05-08 09:00:46

JSON深拷贝对象

2021-07-16 12:33:24

Javascript深拷贝浅拷贝

2020-10-12 08:35:22

JavaScript

2020-06-23 08:41:47

JavaScript开发技术

2018-09-26 14:37:17

JavaScript前端编程语言

2018-05-10 14:20:18

前端JavaScript深拷贝

2021-01-08 06:15:09

深拷贝浅拷贝写时拷贝

2017-08-16 13:30:05

Java深拷贝浅拷贝

2023-05-17 08:42:46

深拷贝Golang

2023-05-12 08:11:58

JavaScriptJSON克隆

2009-05-19 17:28:44

深拷贝浅拷贝clone()

2024-03-15 15:03:23

2021-09-27 11:07:11

深拷贝浅拷贝内存

2022-07-26 08:07:03

Python浅拷贝深拷贝

2011-07-06 16:59:10

长城一体机

2024-02-05 22:56:16

C++拷贝开发

2020-08-03 08:24:26

原型模式拷贝
点赞
收藏

51CTO技术栈公众号