关于 JSON.stringify,你不知道的六件事

开发
JSON.stringify​ 这个方法我相信大家都很熟悉了,一般用来将一个对象或者数组转成字符串。但是你真的很了解 JSON.stringify 吗?

对于 JSON.stringify 这个方法我相信大家都很熟悉了,一般用来将一个对象或者数组转成字符串,也就是一个 JSON,然后让接口携带并传到后端。

但是你真的很了解 JSON.stringify 吗?往下阅读,看你是不是真的了解它~

第二个参数传数组Array

JSON.stringify 的第二个参数传数组时,那么它只会转换数组中的 key,比如下面例子中,只会转换 name 属性:

第三个参数传数字Number

JSON.stringify 的第三个参数传数字时,这个数字会被当成 JSON 的缩进级别。

比如下面例子,分别是2空格、4空格、6空格缩进:

第三个参数传字符串String

JSON.stringify 的第三个参数传字符串时,这个字符串会被当成 JSON 的缩进占位符:

toJSON

如果被转换的对象中有 toJSON 这个方法的话,那么当JSON.stringify进行转换后,会获取这个toJSON方法的执行返回值:

JSON.stringify 局限性

很多人使用 JSON.stringify 来做深拷贝,但是这是万万不行的,因为它是有局限性的:

从下面例子可以看出:

  • undefined、function、symbol 在转换后直接被忽略了
  • 正则表达式转换成对象,日期转换成字符串
  • NaN、Infinity 直接变成 null

所以千万不要用 JSON.stringify 来做深拷贝!!!得不到满意的结果的!!!

环引用报错

对包含循环引用的对象(对象之间相互引用,形成无限循环)执行此方法,会抛出错误。

以前旧版的浏览器和Nodejs是会直接报错的,但是貌似现在新版的不会报错了:


责任编辑:赵宁宁 来源: 前端之神
相关推荐

2021-12-22 09:08:39

JSON.stringJavaScript字符串

2013-06-18 11:05:40

Mac Pro开发工具苹果

2017-05-02 11:36:00

Java

2014-11-21 10:25:18

Java

2011-04-02 13:11:35

JARJava

2010-05-19 09:01:00

2011-11-30 13:34:13

2015-08-14 14:46:47

软件开发

2010-08-24 14:08:33

乔布斯

2015-02-02 14:12:03

云桌面

2024-01-11 11:28:54

2015-08-14 16:39:59

软件开发老板

2021-07-12 23:21:52

MyISAM引擎InnoDB

2015-06-23 13:22:17

桌面云深信服

2010-03-19 08:45:20

Windows Pho

2015-10-10 09:29:32

GitGithub

2021-08-27 17:00:51

Linux内核

2015-10-10 13:11:35

GitGithub工具

2011-06-01 15:34:23

2011-04-02 13:35:21

多线程编程多线程java
点赞
收藏

51CTO技术栈公众号