【问题标题】:Why JSON.stringify does not show full object? [duplicate]为什么 JSON.stringify 不显示完整对象? [复制]
【发布时间】:2020-07-09 11:11:03
【问题描述】:

在本机反应中,我正在做一个控制台日志,例如:

console.log(props);

我正在获取堆栈导航的完整对象导航。

但是当我这样做时:

console.log(JSON.stringify(props));

我的导航对象未定义或为空。

附上截图

【问题讨论】:

  • navigation中所有属性的值都是函数,JSON只支持对象、数组和原语作为值。

标签: reactjs react-native react-router react-native-navigation


【解决方案1】:

来自 MDN

链接:JSON.stringify

JSON.stringify() 将值转换为表示它的 JSON 表示法:

  • 如果值有 toJSON() 方法,它负责定义要序列化的数据。
  • Boolean、Number 和 String 对象转换为 字符串化过程中对应的原始值,符合 传统的转换语义。
  • 未定义、函数和符号不是有效的 JSON 值。如果在转换过程中遇到任何此类值,则它们要么被忽略(在对象中找到),要么被更改为 null(当在数组中找到时)。当传入像 JSON.stringify(function(){}) 或 JSON.stringify(undefined) 这样的“纯”值时,JSON.stringify() 可以返回 undefined。
  • 所有符号键属性都将被完全忽略,即使在使用替换功能时也是如此。
  • Date 的实例通过返回一个字符串来实现 toJSON() 函数(与 date.toISOString() 相同)。因此,它们被视为字符串。
  • Infinity 和 NaN 数字以及 null 值都被视为 null。
  • 所有其他 Object 实例(包括 Map、Set、WeakMap 和 WeakSet)将仅序列化其可枚举属性。

【讨论】:

    【解决方案2】:

    我会告诉你它不起作用的确切原因,

    当你 console.log 它只是打印出它是什么,如果它是一个函数,它描述为 [Function] 。

    JSON.stringify 不会对函数进行字符串化,因此在 this.props 中时, navigation 是一个对象,但在其中存储了 function ,所以 key 是一个 stringvalue 是一个 function.

    检查一下:

    "navigation": {"addListener": [Function addListener], "canGoBack": [Function canGoBack], "dangerouslyGetParent": [Function dangerouslyGetParent], "dangerouslyGetState": [Function anonymous], "dispatch": [Function dispatch], "goBack": [Function anonymous], "isFocused": [Function isFocused], "navigate": [Function anonymous], "pop": [Function anonymous], "popToTop": [Function anonymous], "push": [Function anonymous], "removeListener": [Function removeListener], "replace": [Function anonymous], "reset": [Function anonymous], "setOptions": [Function setOptions], "setParams": [Function anonymous]},
    

    可以看到 key 是 addListener ,而 value 是 [Function addListener] ,所以它是一个函数,因此整个导航对象变成了一个空对象。 p>

    希望它清楚。如有疑问,请随意

    【讨论】:

      猜你喜欢
      • 2012-05-30
      • 2014-12-09
      • 2014-02-02
      • 1970-01-01
      • 2018-12-22
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多