实现深拷贝函数

ES6的Object.assign()函数其实只能拷贝一层,所以需要手写一个深拷贝函数。
有个小技巧判断一个对象是否为数组,instanceof是否等于Array。
主要思路就是使用in方法遍历对象的每个key和值,用递归的方式拷贝到新的对象里面去

function deepClone(obj) {
    let newObj = obj instanceof Array ? [] : {}
    if (obj && typeof obj === "object") {
        for (let key in obj) {
            if (obj.hasOwnProperty(key)) {
                newObj[key] = (obj && typeof obj[key] === 'object') ? deepClone(obj[key]) : obj[key];
            }
        }
    }
    return newObj
}