2017-02-13 77 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」]'而不是。 然後,根元素將只是空鍵('「」'或'[]')。 –