JSON.parse()、JSON.stringify()实现深拷贝应注意问题
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
我们都知道,实现数据深拷贝,我们大多数人都是用的JSON.parse(JSON.stringify())方法,比如:
function deepClone(obj){
let obj_ = JSON.stringify(obj),
loneObj = JSON.parse(obj_);
return loneObj
}
let a=[1,2,3,4],
b=deepClone(a);
b[0] = 2;
console.log(a,b);
打印结果:
我们在代码中对拷贝出来的b数组做了修改,a数组并没有被修改,所以实现了深拷贝。
但是:
如果拷贝对象包含正则表达式,函数,或者undefined等值,此方法就会出现问题
function deepClone(obj){
let obj_ = JSON.stringify(obj),
loneObj = JSON.parse(obj_);
return loneObj
}
let a={
regex:/^\s*/g,
desc:'去掉字符串左侧空白字符正则'
},
b=deepClone(a);
console.log(a,b);
打印结果:
可见,这里没有实现深拷贝。所以这方法也不是万能的。
其他包含函数、undefined的情况,小伙伴可以自己测试看看结果,依旧是拷贝失败。
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
3 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献3条内容
所有评论(0)