国产色在线视频-国产色综合一区二区三区-国产身材极品喷水 在线播放-国产深夜福利视频观看-国产深夜福利视频在线-国产深夜福利视频在线播放

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

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


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


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


JSON.stringify() 第二大特性


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

正如我們?cè)诘谝惶匦运f,JSON.stringify() 序列化時(shí)會(huì)忽略一些特殊的值,所以不能保證序列化后的字符串還是以特定的順序出現(xiàn)(數(shù)組除外)。

JSON.stringify() 第三大特性


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

JSON.stringify() 第五大特性


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


JSON.stringify() 第六大特性


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


JSON.stringify() 第七大特性


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

JSON.stringify() 第八大特性


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

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


JSON.stringify() 第九大特性


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