• js--深克隆_js+css


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)