深拷贝

作者: 前端Sultan | 来源:发表于2022-05-08 12:21 被阅读0次
    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
    不能序列化函数
    不能解决循环引用的对象

    相关文章

      网友评论

          本文标题:深拷贝

          本文链接:https://www.haomeiwen.com/subject/yacqurtx.html