1,如果对象中存在循环引用的情况也无法正确实现深拷贝。
const a = {
b:1
}
a.c=a
console.log(JSON.parse(JSON.stringify(a)))
2,如果 data 里面有时间对象,则JSON.stringify后再JSON.parse的结果,时间将只是字符串的形式。而不是时间对象。
const a = {
b:new Date(1231478256728)
}
console.log(JSON.parse(JSON.stringify(a)))
3,如果 data 里有RegExp、Error对象,则序列化的结果将只得到空对象;
const a = {
b: new RegExp(/\d/),
c: new Error('错误')
}
console.log(JSON.parse(JSON.stringify(a)))
4,如果 data 里有函数,undefined,则序列化的结果会把函数置为undefined或丢失;
const a = {
b: function (){
console.log(1)
},
c:1,
d:undefined
}
console.log(JSON.parse(JSON.stringify(a)))
如果 data 里有NaN、Infinity和-Infinity,则序列化的结果会变成null
const a = {
b: NaN,
c: 1.7976931348623157E+10308,
d: -1.7976931348623157E+10308,
}