1.JSON.parse(JSON.stringify())
let obj= {
name: '王五',
arr: [2, 3],
colors: {
name: '赵四',
},
};
JSON.parse(JSON.stringfly(obj))
2.for...in递归
function deepClone(obj) {
if (typeof obj !== 'object' || obj == null) {
return obj;
}
let result;
if (obj instanceof Array) {
result = [];
} else {
result = {};
}
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
result[key] = deepClone(obj[key]);
}
}
return result;
}
3.Reflect.ownKeys 递归
function deepclone (obj) {
const isobj = (obj) => typeof obj === 'object' && typeof obj !== 'null';
if (!isobj) return obj
const res = Array.isArray(obj) ? [...obj] : { ...obj };
Reflect.ownKeys(res).forEach((key) => {
res[key] = isobj(res[key]) ? deepclone(res[key]) : res[key];
});
return res;
};
4.jQuery $.extend(true, {}, obj1);
5.lodash插件的 _.cloneDeep()
6.通过... 扩展运算符实现 深拷贝(可深拷贝一层,第二层为浅拷贝) 还没验证
注:有其他随时补充 有问题欢迎指出