如何通过defineProperty配合assign实现深度拷贝?

 let a = {b:{c:55}};
  let g = Object.assign({},a);
  g.b.c=5;
  //如何实现
  console.log(g,a);// {b:{c:5}} {b:{c:55}}
阅读 1.7k
1 个回答
const toString = (ag) => {
    return Object.prototype.toString.call(ag)
}
const deepClone = (target) => {
    let result = Object.create({})
    if (typeof target === 'number' || typeof target === 'boolean' || typeof target === 'string') {
        return target
    }
    if (toString(target) === '[object Object]') {
        for (let k in target) {
            result[k] = deepClone(target[k])
        }
        return result
    }
    if (toString(target) === '[object Array]') {
        result = target.map(item => {
            return deepClone(item)
        })
        return result
    }
    return target
}
自己写着玩的
推荐问题