前端使用JSON.stringify实现深拷贝,有哪些隐藏的深坑和潜在风险?

2026-04-03 06:590阅读0评论SEO教程
  • 内容介绍
  • 相关推荐

本文共计737个文字,预计阅读时间需要3分钟。

前端使用JSON.stringify实现深拷贝,有哪些隐藏的深坑和潜在风险?

目录 + 时间类型转换为字符串类型数据 + undefined和function直接丢失 + 转换为null + 当对象循环引用时 + -- 会报错 + 总结 + 时间类型转换为字符串类型数据 + 当对象中有时间类型的元素时 ---- 时间类型会‘转换’

目录
  • 时间类型变成字符串类型数据
  • undefined和function直接丢失
  • 变成null
  • 当对象循环引用的时候 --会报错
  • 总结

时间类型变成字符串类型数据

当对象中有时间类型的元素时候-----时间类型会被变成字符串类型数据

const obj = { date:new Date() } typeof obj.date === 'object' //true const objCopy = JSON.parse(JSON.stringify(obj)); typeof objCopy.date === string; //true

然后你就会惊讶的发现,getTime()调不了了,getYearFull()也调不了了。就所有时间类型的内置方法都调不动了。

但,string类型的内置方法全能调了。

阅读全文

本文共计737个文字,预计阅读时间需要3分钟。

前端使用JSON.stringify实现深拷贝,有哪些隐藏的深坑和潜在风险?

目录 + 时间类型转换为字符串类型数据 + undefined和function直接丢失 + 转换为null + 当对象循环引用时 + -- 会报错 + 总结 + 时间类型转换为字符串类型数据 + 当对象中有时间类型的元素时 ---- 时间类型会‘转换’

目录
  • 时间类型变成字符串类型数据
  • undefined和function直接丢失
  • 变成null
  • 当对象循环引用的时候 --会报错
  • 总结

时间类型变成字符串类型数据

当对象中有时间类型的元素时候-----时间类型会被变成字符串类型数据

const obj = { date:new Date() } typeof obj.date === 'object' //true const objCopy = JSON.parse(JSON.stringify(obj)); typeof objCopy.date === string; //true

然后你就会惊讶的发现,getTime()调不了了,getYearFull()也调不了了。就所有时间类型的内置方法都调不动了。

但,string类型的内置方法全能调了。

阅读全文