function forEach(array, iteratee) {
let index = -1;
const length = array.length;
while (++index < length) {
iteratee(array[index], index);
}
return array;
}
function deepClone(target, map = new WeakMap()) {
if (typeof target === 'object' && target !== null) {
var isArray = Array.isArray(target);
var cloneTarget = isArray ? [] : {};
if (map.get(target)) {
return map.get(target)
}
map.set(target, cloneTarget)
if (isArray) {
forEach(target, (value, key) => {
cloneTarget[key] = deepClone(target[key], map);
});
} else {
const keys = Object.keys(target);
forEach(keys, (value, key) => {
key = value;
cloneTarget[key] = deepClone(target[key], map);
})
}
return cloneTarget
} else {
return target
}
}
var target = {
_obj: { name: 'tom', age: 18 },
_arr: [2, 4, 8],
_basic:1,
_null:null
};
deepClone(target)
转载:https://blog.csdn.net/qq_42813491/article/details/101985670
查看评论