全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货  >  html5技术干货  >  详情

9个JSON.stringify的秘密大多数开发人员却不知道

来源:千锋教育
发布人:wjy
2023-01-31

推荐

在线提问>>

  作为前端开发工程师,你一定用过JSON.stringify,但你知道它的全部秘密吗?

  很久以前,我因此在工作中犯下了无法挽回的错误。如果我早点知道,就不会发生这样的悲剧。理解 JSON.stringify

  基本上,JSON.stringify 将对象转换为 JSON 字符串。同时,JSON.stringify 有如下规则。

  1.undefined、Function 和 Symbol 不是有效的 JSON 值。

  如果在转换过程中遇到任何此类值,它们要么被省略(当在对象中找到时),要么更改为 null(当在数组中找到时)。

  当传入像 JSON.stringify(function() {}) 或 JSON.stringify(undefined) 这样的“纯”值时,JSON.stringify() 可以返回 undefined。

  2.Boolean、Number、String对象在字符串化过程中被转换为对应的原始值,符合传统的转换语义。

  3.所有以符号为键的属性将被完全忽略,即使在使用替换函数时也是如此。

  4.数字 Infinity 和 NaN,以及值 null,都被认为是 null。

  5.如果该值有一个 toJSON() 方法,它负责定义哪些数据将被序列化。

  6.Date实例通过返回字符串实现toJSON()函数(同date.toISOString())。

  因此,它们被视为字符串。

  7.在包含循环引用的对象上执行此方法会抛出错误。

  8.所有其他对象实例(包括 Map、Set、WeakMap 和 WeakSet)将只序列化它们的可枚举属性。

  9.尝试转换BigInt类型的值时抛出错误。

  自己实现 JSON.stringify

  理解功能的最好方法是自己去实现它。下面我写了一个简单的函数来模拟JSON.stringify。

9个JSON.stringify的秘密大多数开发人员却不知道1

9个JSON.stringify的秘密大多数开发人员却不知道2

9个JSON.stringify的秘密大多数开发人员却不知道3

9个JSON.stringify的秘密大多数开发人员却不知道4

9个JSON.stringify的秘密大多数开发人员却不知道5

      还有一个测试

9个JSON.stringify的秘密大多数开发人员却不知道6

9个JSON.stringify的秘密大多数开发人员却不知道7

9个JSON.stringify的秘密大多数开发人员却不知道8

9个JSON.stringify的秘密大多数开发人员却不知道9

相关文章

js获取class属性的值

什么是事件委托?javascript事件委托的实现原理

9个JSON.stringify的秘密大多数开发人员却不知道

TypeScript中必须知道的6个泛型方法

如何在JavaScript中将十进制转换为十六进制

开班信息 更多>>

课程名称
全部学科
咨询

HTML5大前端

Java分布式开发

Python数据分析

Linux运维+云计算

全栈软件测试

大数据+数据智能

智能物联网+嵌入式

网络安全

全链路UI/UE设计

Unity游戏开发

新媒体短视频直播电商

影视剪辑包装

游戏原画

    在线咨询 免费试学 教程领取