Shaoli's Blog

二、手写源码之 深拷贝
function deepClone (obj{
  if (obj === null || typeof obj !== 'object' || obj instanceof Date) {
    return obj
  }
  const cloneObj = Array.isArray(obj) ? [] : {}
  Object.keys(obj).forEach((key) => {
    // 为了区分自身属性和继承属性 
    if(obj.hasOwnProperty(key)) {
      cloneObj[key] = deepClone(obj[key])
    }
  })
  return cloneObj
}
const a = { a1b: { c: { e111dnew Date() } }, c() => { console.log(123) } }
const b = deepClone(a)
console.log(b)


效果如图,实现了深拷贝,属性值互不影响~


如有不足,请指出,谢谢~

    评论列表

  • 暂无评论...快来说说吧!
person
0 / 16
comment
0 / 100