请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于JSON.parse(JSON.stringify())

老师,我看第一遍的时候视频的时候忘记在哪个章节问过您一样的问题。当时您给我答案是,“JSON.parse(JSON.stringify())属于奇技淫巧”。现在是我第二次刷视频,这里还是有点疑惑。工作当中很多同事都是用JSON.parse(JSON.stringify())去做深拷贝的,做代码评审的时候也没同事有指出JSON.parse(JSON.stringify())做深拷贝的不科学之处,我想提出来它做深拷贝不好的,知其然不知其所以然,不敢提出来。在实际项目中,极少在json有函数,正则…所以说JSON.parse(JSON.stringify())和手写深拷贝的结果是一样的。我想老师解惑一下JSON.parse(JSON.stringify())做深拷贝的不合理之处主要体现在那方面,例如是性能方面不好还是还有其他的方面。

正在回答 回答被采纳积分+3

2回答

黑兔_ 2022-01-09 00:12:02

原来如此 我之前有个同事 传的Date 日期类型 JSON 转完以后类型就被过滤掉了 

0 回复 有任何疑惑可以回复我~
  • 值为undefined的转换后类型也变了
    回复 有任何疑惑可以回复我~ 2022-10-18 10:40:54
双越 2021-07-27 20:45:36
const obj = { a: new Map() }
JSON.parse(JSON.stringify(obj))

这样就不行了。Map 就没了

0 回复 有任何疑惑可以回复我~
  • 没懂老师的意思,这种写法没问题呀,
    let obj = {b: new Map([
      [1, 'one'],
      [2, 'two'],
      [3, 'three'],
    ])};
    console.log(JSON.parse(JSON.stringify(obj)));得到的结果是一样的
    回复 有任何疑惑可以回复我~ 2021-08-04 13:00:33
  • 双越 回复 追风之神 #2
    你看看还是 Map 类型吗?
    回复 有任何疑惑可以回复我~ 2021-08-04 18:07:31
  • 追风之神 回复 双越 #3
    不是Map了,无法调用Map类的api
    回复 有任何疑惑可以回复我~ 2021-08-06 16:26:41
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信