Javascript 算法篇之深度拷贝

ES6 之前,大多数深度拷贝都使用序列化和反序列化的方式
ES6 之后,前种方式存在一些弊端,比如类型为 Symbol 的属性会被过滤
这里利用递归的方式实现一个深度拷贝,代码如下:

function deepCopy (obj) {
  let res
  if (obj instanceof Object) {
    res = Array.isArray(obj) ? [] : {}
    let props = Reflect.ownKeys(obj)
    for (let key of props) {
      res[key] = deepCopy(obj[key])
    }
  } else {
    return obj
  }
  return res
}
除特殊说明外本人博客均属原创,转载请注明出处:http://blog.johnhan.cn/blog_1113.html
京ICP备19044523号-1