美文网首页js
深度拷贝(递归拷贝)

深度拷贝(递归拷贝)

作者: CRUD_科科 | 来源:发表于2019-06-14 09:44 被阅读0次

深度拷贝

拷贝出来的和被拷贝的没有关系,即被拷贝的属性改变,拷贝出来的属性不会跟着改变。

// 深度拷贝 递归拷贝  (拷贝出来的和被拷贝的没有关系)
function deepClone(value) {
  // null undefined直接返回 null == undefined是true,但是null == undefined是false
  if (value == null) return value; // 因为上面,所以这里只判断null
  if (typeof value !== 'object') return value;  // 不是对象的有:Number、Boollean、Function
  if (value instanceof Date) return new Date(value);  // 如果是日期返回重新创建的日期
  if (value instanceof RegExp) return new RegExp(value);
  // 如果是对象或者数组
  let construc = new value.constructor(value);
  for (const key in value) {
    if (value.hasOwnProperty(key)) {
      construc[key] = deepClone(value[key]); // 如果是obj,那么继续调用自己循环,这就叫做递归拷贝
    }
  }
  return construc;
}
// console.log(new {}.constructor)  // {}.constructor = Object()  new Object() = {} 
console.log(deepClone([1,2,{a:{b:1,c:{d:function(){}}}}]))

相关文章

  • 深度拷贝(递归拷贝)

    深度拷贝 拷贝出来的和被拷贝的没有关系,即被拷贝的属性改变,拷贝出来的属性不会跟着改变。

  • 对象深拷贝和浅拷贝

    浅拷贝 深拷贝 深拷贝的递归方法 深拷贝的JSON方法

  • 深拷贝、浅拷贝

    父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 深拷贝同浅拷贝的区别:浅拷贝...

  • 面试题整理

    父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 深拷贝同浅拷贝的区别:浅拷贝...

  • iOS面试基础一

    #父类实现深拷贝时,子类如何实现深度拷贝.父类没有实现深拷贝时,子类如何实现深度拷贝.# <(1)深拷贝同浅拷贝的...

  • 0. iOS面试题基础篇

    1. 父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 1.1 深拷贝同浅拷贝...

  • iOS基础知识点01

    1. 父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 1.1 深拷贝同浅拷贝...

  • iOS知识点(一)

    1.1 父类实现深拷贝时,子类如何实现深度拷贝。 父类没有实现深拷贝时,子类如何实现深度拷贝。深拷贝同浅拷贝的区别...

  • 面试 (一) : 基础篇

    父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。• 深拷贝同浅拷贝的区别:浅拷...

  • 基础

    1、父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 深拷贝同浅拷贝的区别:浅...

网友评论

    本文标题:深度拷贝(递归拷贝)

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