服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服务器之家 - 编程语言 - JavaScript - js教程 - JavaScript 原生深拷贝方法来啦!structuredClone 闪耀登场~

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

2024-05-08 17:52前端之神 js教程

原生的深拷贝~ 分享一个 JavaScript 原生的深拷贝方法 structuredClone,其实这个方法出了很久了,但是存在感一直很低~ 图片 说这个方法前,我们先来讨论一下,常见的深拷贝都有哪些方案呢? JSON.parse JSON.stringify() 很多人会用 JSON

原生的深拷贝~

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

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

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

JSON.parse & JSON.stringify()

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

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

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

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

数据类型

克隆结果

number

string

undefined

null

boolean

object

Array

Function

map

Set

Date

Error

Regex

Dom节点

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

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

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

lodash.cloneDeep

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

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

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

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

数据类型

克隆结果

number

string

undefined

null

boolean

object

Array

Function

map

Set

Date

Error

Regex

Dom节点

window.structuredClone

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

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

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

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

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

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

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

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

数据类型

克隆结果

number

string

undefined

null

boolean

object

Array

Function

map

Set

Date

Error

Regex

Dom节点

原文地址:https://mp.weixin.qq.com/s/3d6PDhiudBsm3cV2jtx2sQ

延伸 · 阅读

精彩推荐
  • js教程关于Javascript闭包与应用的详解

    关于Javascript闭包与应用的详解

    这篇文章主要介绍了关于Javascript闭包与应用的详解,文中有非常详细的代码示例.对正在学习js的伙伴们有很好的帮助,需要的朋友可以参考下...

    Marshal_dj9332022-03-07
  • js教程nestjs返回给前端数据格式的封装实现

    nestjs返回给前端数据格式的封装实现

    这篇文章主要介绍了nestjs返回给前端数据格式的封装实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋...

    水痕019072022-01-22
  • js教程11个 杀手级 JavaScript 单行代码

    11个 杀手级 JavaScript 单行代码

    每个 JS 开发人员都应该使用 javascript one liner 来提高生产力和技能,所以今天我们讨论一些可以在日常开发生活中使用的 one liner。...

    web前端开发7682022-10-20
  • js教程Three.js概述和基础知识学习

    Three.js概述和基础知识学习

    这篇文章主要为大家介绍了Three.js概述和基础知识学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    士必弘毅6772023-05-15
  • js教程面向前端与未来标准的Node.js Web 框架再进化

    面向前端与未来标准的Node.js Web 框架再进化

    本次分享来自阿里巴巴前端技术专家刘子健(繁易)在第十六届D2前端技术论坛的分享,为大家带来 Node.js Web 框架的发展历程,分析各类框架的适用场景及...

    淘系技术6682022-04-25
  • js教程用javascript实现倒计时效果

    用javascript实现倒计时效果

    这篇文章主要为大家详细介绍了用javascript实现倒计时效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    爱前端的茂茂8042022-01-20
  • js教程js数组的基本使用总结

    js数组的基本使用总结

    这篇文章主要给大家介绍了关于js数组的基本使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    抓泥鳅5512022-01-04
  • js教程Strve.js开发一个属于自己的库或框架

    Strve.js开发一个属于自己的库或框架

    Strve.js是一个可以将字符串转换为视图的JS库。这里的字符串指的是模板字符串,所以你仅需要在JavaScript中开发视图。Strve.js不仅易于上手,还便于灵活拆装...

    前端历劫之路6132021-12-23