深拷贝的实现方法

简介: 深拷贝的实现方法

深拷贝的实现方法


深拷贝的方法

  • json.parse(json.stringfy)
  • 递归函数
/* 递归实现深拷贝 */
    let obj = {name:'lnalna',age:18,msg:{height:158}}
    function copy(obj){
      /* 声明一个变量用来储存拷贝之后的内容 */
      let newObj = null
      /* 判断拷贝对象obj数据类型
       * 由于null不可以循环但类型又是object,所以这个需要对null进行判断
      */
      if(typeof obj === 'object' && obj!==null){
        /* 复杂数据类型进入递归 */
        /* 根据参数的具体数据类型声明不同的类型来储存 */
        newObj = obj instanceof Array ? []:{}
        /* 遍历obj 实现赋值*/
        for(let key in obj){
          /*循环obj 中的每一项,如果里面还有复杂数据类型,
           *则直接利用递归再次调用copy函数
          */
          newObj[key] = call(obj[key])
        }
      }else{
        /* 简单数据类型直接赋值 */
        newObj = obj
      }
      /* 函数必须有返回值,否则结构为undefined */
      return newObj
    }
    console.log(copy(obj),obj);

三方库 lodash

相关文章
|
2月前
|
设计模式 存储 Java
深拷贝与浅拷贝,就是这么简单
深拷贝与浅拷贝,就是这么简单
|
2月前
|
存储 人工智能 前端开发
深拷贝浅拷贝的区别?如何实现一个深拷贝?
深拷贝浅拷贝的区别?如何实现一个深拷贝?
|
7天前
|
安全 Java
深拷贝和浅拷贝的区别
深拷贝和浅拷贝的区别
|
2月前
|
消息中间件 Kubernetes NoSQL
构造函数、深拷贝、浅拷贝
构造函数、深拷贝、浅拷贝
|
8月前
|
C++
22 C++ - 深拷贝和浅拷贝
22 C++ - 深拷贝和浅拷贝
23 0
|
11月前
|
Java
浅拷贝与深拷贝
浅拷贝与深拷贝
57 0
|
11月前
|
存储 JavaScript 前端开发
深拷贝浅拷贝有什么区别?怎么实现深拷贝?
深拷贝浅拷贝有什么区别?怎么实现深拷贝?
63 0
|
12月前
|
JSON 数据格式
深拷贝和浅拷贝、及实现方式
深拷贝和浅拷贝、及实现方式
74 0
|
JavaScript 前端开发
数组和对象的浅拷贝,深拷贝
数组和对象的浅拷贝,深拷贝
数组和对象的浅拷贝,深拷贝
|
存储 Java
深拷贝与浅拷贝
深拷贝与浅拷贝
深拷贝与浅拷贝