首页 > 其他 > 详细

深拷贝

时间:2021-06-23 15:23:41      阅读:23      评论:0      收藏:0      [点我收藏+]

写法一:

//深拷贝
  const deepCopy = (data) => {
    if (typeof data != ‘object‘ || data == null) return data
    let result = null
    if (data instanceof Array) {
      //Array的原型是Object
      result = []
    } else {
      result = {}
    }
    for (let key in data) {
      const one = data[key]
      result[key] = deepCopy(one)
    }
    return result
  }

  

写法二:JSON.parse(JSON.stringify(data))

疑问:

既然有JSON.parse(JSON.stringify(data)),为啥还要用递归写深拷贝?

原因是如何data内有特殊的对象,例如Date类型的数据会被转成字符串,RegExp被转成{},Error被转成{}

let b = {
g: ‘i am g‘,
e: new Error(‘我是错误‘),
exp:new RegExp(/ab+c/, ‘g‘),
time: new Date()
}

let c = JSON.parse(JSON.stringify(b))
console.log(c.time instanceof String) //true
console.log(c.exp) //{}
console.log(c.e) //{}

  

 

深拷贝

原文:https://www.cnblogs.com/baixinL/p/14922204.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!