上篇写了一些实验。本篇讨论下实现
const newobj = JSON.parse(JSON.stringify(obj))
这种方法有个问题是,对象内的函数JSON化会被忽略,所以,就需要手动实现了。
function deepClone(obj) {
let isArray = Array.isArray(obj);
let result = isArray ? [] : {};
if (isArray) {
obj.forEach((item, index) => {
result[index] = deepClone(obj);
});
} else if (typeof obj === "object") {
Object.keys(obj).forEach(item => {
result[item] = deepClone(obj[item]);
});
} else {
result = obj;
}
return result;
}
实现得比较简单。先这样吧2333