Date对象拷贝后数据类型变成字符串
let obj = { d: new Date(), }; console.log(JSON.stringify(obj)); // {d: "2020-08-12T04:47:40.958Z"}
正则对象、Error对象拷贝后变成空对象
let obj = { r: /\d+/gi, e: new Error('an error') }; console.log(JSON.stringify(obj)); // {r: {}, e: {}}
对象里面的函数和undefined属性、Symbol值拷贝后属性丢失
let obj = { f: console.log, u: undefined, s: Symbol("foo") }; console.log(JSON.stringify(obj)); // {}
NaN、Infinity、-Infinity拷贝后变为null
let obj = { i: Infinity, l: -Infinity, n: NaN, }; console.log(JSON.stringify(obj)); // {i: null, l: null, n: null}
特殊数据报错
这个简单的说就是如果对象中有环的话话就会报错,最简单的例子就是
console.log(JSON.parse(JSON.stringify(window)));