2017-02-13 81 views
3

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

当一个函数用作替换参数时,它使用两个参数,即键和值被串化。提供密钥的对象作为替代者的此参数提供。最初,它会用一个空键代表被串化的对象进行调用,然后调用该对象或数组上的每个属性被串化。

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

+0

你能举一些例子来澄清你的问题吗? –

+0

有趣的事情,他们如何仔细选择一个方便的条件。如果你决定使用其他任何东西,比如'key.indexOf('PUBLIC_')=== 0',它就会中断。 – Qwerty

回答

0

退房MSDN on JSON.stringify

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

所以这只是根对象。

这意味着相同的MDN的解释:

最初,它被称为

这意味着它获得的称为根对象,这是第一次处理

用空键

这是一个空字符串。

表示对象

被字符串化

这又意味着根对象。

请注意,空对象可用于对象中的属性。所以不要认为键的空字符串会使它完全确定正在处理根对象。

+1

感谢您的评论,但我仍然无法理解为什么我们需要将这个空密钥传递给替换函数。有没有用例呢?我们所需要的所有属性和值都不是将对象串联起来吗? – samxy

+0

您为字符串化传递的对象不是任何属性的值,因此没有键。我更喜欢一个能够给你完整路径的框架。例如'key =“.foo.bar [5] .baz”;值= 42'。选择以数组形式获得路径:'key = [“foo”,“bar”,5,“baz”]'而不是。 然后,根元素将只是空键('“”'或'[]')。 –