写了个深拷贝

128 阅读1分钟

写了个深拷贝

数据

let t = {
    a: 1,
    b: {
        b1: 1,
        b2: {
            bb1: 'abc'
        }
    },
    c: [1, 2, 3],
    fn: function() {console.log('我是函数啊!')}
}

深拷贝方法

function deepclone(obj, newObj) {
    for (let key in obj) {
        if (Object.prototype.toString.call(obj[key]) === '[object Object]') {
            newObj[key] = {}
            deepclone(obj[key], newObj[key])
        } if (Object.prototype.toString.call(obj[key]) === '[object Array]') {
            newObj[key] = []
            deepclone(obj[key], newObj[key])
        } else {
            newObj[key] = obj[key]
        }
    }
}

调用

// 新对象
let _t = {}
deepclone(t, _t)