美文网首页
js深拷贝对象

js深拷贝对象

作者: 张大娃创业笔记 | 来源:发表于2020-12-01 23:37 被阅读0次
// 深拷贝对象
export function deepClone(obj) {
  const _toString = Object.prototype.toString

  // null, undefined, non-object, function
  if (!obj || typeof obj !== 'object') {
    return obj
  }

  // DOM Node
  if (obj.nodeType && 'cloneNode' in obj) {
    return obj.cloneNode(true)
  }

  // Date
  if (_toString.call(obj) === '[object Date]') {
    return new Date(obj.getTime())
  }

  // RegExp
  if (_toString.call(obj) === '[object RegExp]') {
    const flags = []
    if (obj.global) { flags.push('g') }
    if (obj.multiline) { flags.push('m') }
    if (obj.ignoreCase) { flags.push('i') }

    return new RegExp(obj.source, flags.join(''))
  }

  const result = Array.isArray(obj) ? [] : obj.constructor ? new obj.constructor() : {}

  for (const key in obj) {
    result[key] = deepClone(obj[key])
  }

  return result
}

相关文章

  • JS实现深拷贝、instanceof、判断是否为数组

    JS深拷贝 JS中拷贝对象可以按照拷贝的程度可以分为浅拷贝和深拷贝,有些时候我们需要拷贝之后的对象和拷贝之前的对象...

  • JS工具-类型判断和深拷贝

    1. js深拷贝 js深拷贝简单对象的拷贝可以用JSON.stringify() 和 JSON.parse() 实...

  • JS中对象的复制

    JS中的对象复制分为两种情况:深拷贝和浅拷贝。深拷贝和浅拷贝的区别在于对数组和对象的拷贝,对它们拷贝时浅拷贝只是拷...

  • js对象深拷贝

    1.使用slice或者concat进行数组深拷贝 对于值都是普通数据类型的数组,可以使用数组的slice或者con...

  • js深拷贝对象

  • js对象深拷贝

    javascript的数据类型有两种;基本数据类型和引用数据类型。 当我们拷贝一个引用数据类型变量的时候,然后操作...

  • JS对象深拷贝

    方法一 注意:该方法只适用于简单类型的对象,不适用于对象里面嵌套对象;即使拷贝成功,给新对象里的对象的变量重新赋值...

  • JS对象深拷贝

    方法一: JSON.parse(JSON.stringify(obj))缺点:不能复制对象里的function,s...

  • 2019-11-19 JS对象深拷贝

    JS对象深拷贝: 1.JSON方法深拷贝 JSON.parse(JSON.stringify(obj)); 2.解...

  • 【转】一行代码完成js对象数组的深拷贝

    一行代码完成js对象数组的深拷贝

网友评论

      本文标题:js深拷贝对象

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