手写一个 JS 深拷贝
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
function deepCopy(obj) {
//判断是否是简单数据类型,
if (typeof obj == "object") {
//复杂数据类型
var result = obj.constructor == Array ? [] : {};
for (let i in obj) {
result[i] = typeof obj[i] == "object" ? deepCopy(obj[i]) : obj[i];
}
} else {
//简单数据类型 直接 == 赋值
var result = obj;
}
return result;
}
let o1 = {
a: {
b: 1
}
};
let o2 = JSON.parse(JSON.stringify(o1));
另一种方法
function deepCopy(s) {
const d = {};
for (let k in s) {
if (typeof s[k] == "object") {
d[k] = deepCopy(s[k]);
} else {
d[k] = s[k];
}
}
return d;
}