Skip to content

[js] 第131天 JSON.stringify有什么局限性和哪些技巧? #1110

Open
@haizhilin2013

Description

@haizhilin2013
Collaborator

第131天 JSON.stringify有什么局限性和哪些技巧?

Activity

imjustpassby

imjustpassby commented on Aug 25, 2019

@imjustpassby

对象属性为undefined有问题,会忽略这个属性

EmiyaYang

EmiyaYang commented on Aug 25, 2019

@EmiyaYang

会忽略undefinedfunctionSymbol,不能正确处理NaNInfinity,循环引用。

YaleWan

YaleWan commented on Aug 25, 2019

@YaleWan

可以和JSON.parse实现深度拷贝

:octocat: From gitme Android

arieltlm

arieltlm commented on Aug 28, 2019

@arieltlm

JSON.stringify(value[, replacer[, space]]);
replacer:
可选。用于转换结果的函数或数组。

如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。

如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当 value 参数也为数组时,将忽略 replacer 数组。

space:
可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t

d4c-27

d4c-27 commented on Apr 6, 2022

@d4c-27

值为undefined会被省略掉 Date类型会变成字符串类型 RegExp、Error对象识别不了,只能得到空对象 NaN、Infinity和-Infinity,则序列化的结果会变成null

xiaoqiangz

xiaoqiangz commented on Jul 11, 2022

@xiaoqiangz

可以配合Json.Parse()实现深拷贝,但是会忽略undefined、Symbol、function,不能正确处理NaN,Infinity。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    jsJavaScript

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @haizhilin2013@arieltlm@xiaoqiangz@EmiyaYang@imjustpassby

        Issue actions

          [js] 第131天 JSON.stringify有什么局限性和哪些技巧? · Issue #1110 · haizlin/fe-interview