【问题标题】:JSON.stringify(value[, replacer[, space]])JSON.stringify(value[, replacer[, space]])
【发布时间】:2017-07-01 14:23:01
【问题描述】:

根据MDN DocsJSON.stringify() 方法将 JavaScript 值转换为 JSON 字符串,如果指定了替换函数,则可选地替换值,或者如果指定了替换器数组,则可选地仅包含指定的属性。

当一个函数用作替换参数时,它有两个参数,键和值被字符串化。找到密钥的对象作为替换器的 this 参数提供。最初,它使用一个表示正在字符串化的对象的空键调用,然后为正在字符串化的对象或数组上的每个属性调用它。

我的问题是第一次调用这个函数的目的是什么?该文件没有说明其行为/影响。

【问题讨论】:

  • 你能举一些例子来澄清你的问题吗?
  • 有趣的是他们如何精心选择了一个方便的条件。如果您决定使用其他任何东西,例如key.indexOf('PUBLIC_') === 0,它就会中断。

标签: javascript json stringify


【解决方案1】:

查看MSDN on JSON.stringify:

根对象的键是一个空字符串:“”。

所以这只是根对象。

和MDN上的解释意思一样:

最初它被调用

这意味着它会为首先处理的根对象调用

用一个空键

这是一个空字符串。

表示被字符串化的对象

这又意味着根对象。

请注意,空键可用于对象中的属性。因此,不要认为键的空字符串可以绝对确定正在处理根对象。

【讨论】:

  • 感谢您的评论,但我仍然不明白为什么我们需要将这个空键传递给替换函数。这有什么用例吗?字符串化对象不就是我们需要的所有属性和值吗?
  • 你传递给字符串化的对象不是任何属性的值,所以没有key。我更喜欢为您提供完整路径的框架。例如key = ".foo.bar[5].baz"; value = 42。可以选择将路径作为数组获取:key = [ "foo", "bar", 5, "baz" ]。然后根元素将只有空键(""[])。
猜你喜欢
  • 1970-01-01
  • 2016-06-11
  • 2022-01-01
  • 2015-08-16
  • 2016-02-13
  • 2014-06-22
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
相关资源
最近更新 更多