多人伦交性欧美,卡1卡2卡3乱码欧美,一个人免费观看高清视频,亚洲国产成人久久综合一区77,欧美性性性性xxxxoooo

你不知道的JSON.stringify()九大特性

2020/11/2 13:49:28   閱讀:2628    發(fā)布者:2628


JSON.stringify() 第一大特性總結(jié)


undefined、任意的函數(shù)以及 symbol 作為對象屬性值時 JSON.stringify() 對跳過(忽略)它們進行序列化undefined、任意的函數(shù)以及 symbol 作為數(shù)組元素值時,JSON.stringify() 將會將它們序列化為 null
undefined、任意的函數(shù)以及 symbol 被 JSON.stringify() 作為單獨的值進行序列化時,都會返回 undefined


JSON.stringify() 第二大特性


非數(shù)組對象的屬性不能保證以特定的順序出現(xiàn)在序列化后的字符串中。

正如我們在第一特性所說,JSON.stringify() 序列化時會忽略一些特殊的值,所以不能保證序列化后的字符串還是以特定的順序出現(xiàn)(數(shù)組除外)。

JSON.stringify() 第三大特性


轉(zhuǎn)換值如果有 toJSON() 函數(shù),該函數(shù)返回什么值,序列化結(jié)果就是什么值,并且忽略其他屬性的值。
JSON.stringify()第四大特性
JSON.stringify() 將會正常序列化 Date 的值。
實際上 Date 對象自己部署了 toJSON() 方法(同Date.toISOString()),因此 Date 對象會被當(dāng)做字符串處理。

JSON.stringify() 第五大特性


NaN 和 Infinity 格式的數(shù)值及 null 都會被當(dāng)做 null。


JSON.stringify() 第六大特性


布爾值、數(shù)字、字符串的包裝對象在序列化過程中會自動轉(zhuǎn)換成對應(yīng)的原始值。


JSON.stringify() 第七大特性


其他類型的對象,包括 Map/Set/WeakMap/WeakSet,僅會序列化可枚舉的屬性。JSON.stringify() 不可枚舉的屬性默認(rèn)會被忽略

JSON.stringify() 第八大特性


我們都知道實現(xiàn)深拷貝最簡單粗暴的方式就是序列化:JSON.parse(JSON.stringify()),這個方式實現(xiàn)深拷貝會因為序列化的諸多特性從而導(dǎo)致諸多的坑點:比如現(xiàn)在我們要說的循環(huán)引用問題。

對包含循環(huán)引用的對象(對象之間相互引用,形成無限循環(huán))執(zhí)行此方法,會拋出錯誤。這也就是為什么用序列化去實現(xiàn)深拷貝時,遇到循環(huán)引用的對象會拋出錯誤的原因。


JSON.stringify() 第九大特性


所有以 symbol 為屬性鍵的屬性都會被完全忽略掉,即便 replacer 參數(shù)中強制指定包含了它們, replacer 是 JSON.stringify() 的第二個參數(shù)