如何通过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
}
自己写着玩的
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题