- 如果对象身上有属性值为时间对象的时候,会将时间对象改成以字符串形式显示
例如:
let obj1 = { age:1,time:new Date() }
let obj2 = JSON.parse(JSON.stringify(obj1))
console.log(obj2) //{age: 1, time: “2021-03-08T03:38:28.898Z” - 如果对象身上有属性值为function、undefined的时候,拷贝出来的对象会没有这两个属性
例如:
let obj1 = { age:1,eat:() => {},name:undefined }
let obj2 = JSON.parse(JSON.stringify(obj1))
console.log(obj2) //{age: 1} - 如果对象身上有属性值为NaN、Infinity和-Infinity的时候,会转换成null显示
例如:
let obj1 = { age:NaN,name:“张三” }
let obj2 = JSON.parse(JSON.stringify(obj1))
console.log(obj2) //{age: null, name: “张三”} - 如果对象属性出现循环引用的话,也无法进行深拷贝
例如:
let obj = { age:18,name:“张三” }
obj.obj = obj
let obj2 = JSON.parse(JSON.stringify(obj))
console.log(obj2) // 报错:Uncaught TypeError: Converting circular structure to JSON
JSON.parse(JSON.stringify(obj)) 实现深拷贝的坑
最新推荐文章于 2024-08-20 16:38:07 发布