JSON.parse,JSON.stringify 深浅拷贝的缺陷
经常使用 JSON.parse, JSON.stringify 的小伙伴都知道,他们两个可以用于深拷贝对象,但是可能会不太注意一些缺陷,是又一次我使用他们去深拷贝对象,我发现有些属性莫名其妙的丢失了,之前没有太深究其弊端,今天趁着有空深究一下这些弊端。
首先我们来看下代码:
let deepClone = function(obj) {
return JSON.parse(JSON.stringify(obj))
}
let a = {
name: 'Ken',
age: 18,
hobbit: ['dance', 'sing', {type: 'sports', value: 'run'}],
schoolData: {
grades: 'A',
},
run: function() {},
walk: undefined,
fly: NaN,
cy: null
}
let b = deepClone(a)
console.log("b", b)
/**
{
age: 18,
cy: null,
fly: null,
hobbit: (3)