avatar

不觉南风

不觉南风的个人博客

  • 首页
  • 文章
  • 标签
  • 项目&效果展示
  • 关于
Home js中使用json.stringify()进行深拷贝的缺点有哪些?
文章

js中使用json.stringify()进行深拷贝的缺点有哪些?

Posted 2024-02-28 Updated 2024-02- 28
By 不觉南风
1~1 min read

使用JSON.stringify()进行深拷贝有以下几个缺点:

  1. 无法处理循环引用:当对象中存在循环引用时,即对象的某个属性指向该对象本身,JSON.stringify()会抛出异常。
  2. 无法拷贝非枚举属性和方法:JSON.stringify()只能拷贝对象自身的可枚举属性,并且会忽略函数和Symbol类型的属性。
  3. 无法拷贝特殊的对象属性:JSON.stringify()不会拷贝对象的原型链上的属性。
  4. 无法处理日期对象:将日期对象转换为JSON字符串后再使用JSON.parse()解析时,日期对象会变成字符串,而不是重新生成日期对象。
  5. 无法处理正则表达式对象:正则表达式对象在转换为JSON字符串后会变成空对象。
  6. 无法处理undefined和function:JSON.stringify()会将undefined和函数直接转换为null。
  7. 无法处理Infinity和NaN:JSON.stringify()会将Infinity和NaN转换为null。
  8. 需要注意的是,JSON.stringify()只能进行浅拷贝,即拷贝对象的引用而不是值。如果对象中的属性值是对象或数组,那么拷贝后的对象中的属性仍然指向原对象中的属性,并没有创建新的对象。所以,如果需要进行深拷贝,就需要自行编写递归函数或使用其他库来实现。
编程随记
javaScript基础
License:  CC BY 4.0
Share

Further Reading

Mar 21, 2024

vue项目中利用scss进行全局字体放大

新公司需要上架浙里办政府服务网的PC端,在审核的时候被老龄化适配打回来了。需要做全局的字体放大,在网上查了一些博客,最后结合自

Mar 9, 2024

AMD规范

什么是AMD规范 AMD(Asynchronous Module Definition),也就是异步模块定义。AMD规范,制定了定义模块的规则,使得模块之间的依赖可以被异步加载。这和浏览器的异步加载模块的环境刚好适应(浏览器同步加载模块会导致性能、可用性、调试和跨域访问等问题)。 所谓异步,就是所有

Mar 9, 2024

http缓存机制

缓存的基本原理 在一个C/S结构中,最基本的缓存分为两种: 客户端缓存 服务器缓存 本文仅讨论客户端缓存

OLDER

Win10系统如何设置默认以管理员身份运行命令提示符?

NEWER

vue中有哪些地方用到了事件循环

Recently Updated

  • vue项目中利用scss进行全局字体放大
  • AMD规范
  • http缓存机制
  • git提交报错 husky - commit-msg hook exited with code 1 (error)
  • for...in 和 for...of有什么区别?

Trending Tags

电脑常见问题 nodejs vuejs webpack 网络 问题记录 javaScript基础 小程序 常用插件 数据库

Contents

©2025 不觉南风. Some rights reserved.

Using the Halo theme Chirpy