首页 > 其他分享 >深拷贝

深拷贝

时间:2022-11-02 09:11:06浏览次数:76  
标签:isArray obj newObj key 拷贝 isObject

function deepClone(obj) {
  function isObject(o) {
    return (typeof o === 'object' || typeof o === 'function') && o !== null
  }

  if (!isObject(obj)) {
    throw new Error('非对象')
  }

  let isArray = Array.isArray(obj)
  let newObj = isArray ? [...obj] : { ...obj }
  Reflect.ownKeys(newObj).forEach(key => {
    newObj[key] = isObject(obj[key]) ? deepClone(obj[key]) : obj[key]
  })

  return newObj
}

lodash深拷贝地址

不完美的深拷贝

JSON.parse(JSON.stringify(object))

会忽略 undefined
会忽略 symbol
不能序列化函数
不能解决循环引用的对象

标签:isArray,obj,newObj,key,拷贝,isObject
From: https://www.cnblogs.com/Sultan-ST/p/16849859.html

相关文章