1. Атрибут типа даты будет преобразован в строку
const obj = {
    date:new Date()
}
typeof obj.date === 'object' //true
const objCopy = JSON.parse(JSON.stringify(obj));
typeof objCopy.date === string; //true

Затем вы будете удивлены, обнаружив, что getTime() не может быть вызвана, и getYearFull() также не может быть вызвана. Встроенные методы всех типов времени недоступны. Однако встроенные методы строкового типа полностью доступны.

2. Неопределенный тип и тип функции будут удалены напрямую

const obj = {
    undef: undefined,
    fun: () => { console.log('hello world') }
}
console.log(obj,"obj");
const objCopy = JSON.parse(JSON.stringify(obj));
console.log(objCopy,"objCopy") // Both under and fun are missing

3. NaN и Infinity будут преобразованы в null

const obj = {
    nan:NaN,
    infinityMax:1.7976931348623157E+10308,
    infinityMin:-1.7976931348623157E+10308,
}
console.log(obj, "obj");
const objCopy = JSON.parse(JSON.stringify(obj));
console.log(objCopy,"objCopy") // All attribute will be null

4. В случае циклической ссылки будет выдана ошибка

const obj = {
    objChild:null
}
obj.objChild = obj;
const objCopy = JSON.parse(JSON.stringify(obj)); // Error thrown here
console.log(objCopy,"objCopy")

В некоторых случаях вам будет очень удобно выполнять глубокое копирование объекта с помощью JSON.parse(JSON.stringify(obj)). Тем не менее, это не всегда так. На подходе еще одна история, которая поможет вам с глубокой копией объекта в javascript. Спасибо за чтение.