簡體   English   中英

JSON.stringify()對對象中的函數有什么作用?

[英]What does JSON.stringify() does with functions in an object?

假設Javascript對象具有以下功能:

function Foo() {
    this.a = 32;
    this.bar = function (){
        alert("Hello World!");
    }
}

JSON.stringify()如何處理bar函數? 只是被忽略了嗎? 這是標准做法嗎? JSON會轉換什么內容,而不會將其轉換為Json字符串?

雷姆:我不知道為什么人們不贊成我的問題,很明顯,不應該使用函數將對象字符串化。 我只是想了解默認行為。

JSON.stringify只是將傳遞給數組的函數更改為null ,如果在一個對象中則根本不包含該屬性。 它甚至不以字符串形式嘗試復制該函數。

例如,請參見:

JSON.stringify([function () {}]); // "[null]"
JSON.stringify({ x: function () {} }); // "{}"

如果嘗試對函數本身進行字符串化,則它不是有效的JSON值,這意味着JSON.stringify無法生成有效的JSON字符串:

JSON.stringify(function () {}); // undefined

這是ECMAScript規范的一部分,盡管其實際用語相當復雜。 但是,其中包含一個注釋,總結如下:

注5

沒有JSON表示形式的值(例如undefined和functions)不會產生String。 相反,它們會產生未定義的值。 在數組中,這些值表示為String null 在對象中,無法表示的值導致該屬性被排除在字符串化之外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM