你真的了解JSON.stringify吗?
公众号:程序员白特,欢迎一起交流学习~
大家对于JSON.stringify
这个方法应该都非常熟悉了,通常用于将对象或数组转换为字符串,即JSON格式,然后将其作为参数传递给后端接口。
你对JSON.stringify
真的很熟悉吗?除了基本用法,你知道它还有其他6种用法吗?让我们一起深入了解吧~.
1、第二个参数传数组Array
在JSON.stringify
的第二个参数传入数组时,只会转换数组中的key
,例如在下面的例子中,只会转换name
属性。
2、第三个参数传数字Number
当使用JSON.stringify
的第三个参数传递一个数字时,该数字将被视为JSON
的缩进级别。例如,下面的示例分别使用2个空格、4个空格和6个空格进行缩进。
3、第三个参数传字符串String
当将JSON.stringify
的第三个参数传递为一个字符串时,该字符串将被视为JSON
的缩进占位符。
4、toJSON
若被转换的对象中存在toJSON
方法,则在执行JSON.stringify
转换后,将获得该toJSON
方法的返回值。
5、JSON.stringify 局限性
许多人会尝试使用JSON.stringify
进行深拷贝,但这种方法存在局限性,因此并不可取。
举例子:
- undefined、function、symbol 在转换后直接被忽略了
- 正则表达式转换成对象,日期转换成字符串
- NaN、Infinity 直接变成 null
因此,请不要使用JSON.stringify
来进行深拷贝!这样无法获得满意的结果!
6、环引用报错
当执行此方法时,对于包含循环引用的对象(即对象之间相互引用,形成无限循环),将会抛出错误。以前的旧版浏览器和Node.js会直接报错,但是现在的新版已经不会再报错了。