function cloneDeep(old) {    let map = new WeakMap()    return cloneDeepCon(old, map)}function cloneDeepCon(old, map) {    if (!(old && typeof old === 'object')) return old    let existObj = map.get(old)    if (existObj) return existObj    let oldClone = Array.isArray(old) ? [] : {}    map.set(old, oldClone)    let keys = Object.getOwnPropertyNames(old)    keys.forEach((key) => {        oldClone[key] = cloneDeepCon(old[key], map)         Object.defineProperty(            oldClone,            key,            Object.getOwnPropertyDescriptor(old, key)        )    })    return oldClone}