深拷贝的实现方法

简介: 深拷贝的实现方法

深拷贝的实现方法


深拷贝的方法

  • 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

相关文章
|
JSON Java API
深拷贝、浅拷贝
深拷贝、浅拷贝
91 0
|
8月前
|
存储 人工智能 前端开发
深拷贝浅拷贝的区别?如何实现一个深拷贝?
深拷贝浅拷贝的区别?如何实现一个深拷贝?
116 0
|
3月前
|
存储 前端开发 JavaScript
浅拷贝和深拷贝的区别?
本文首发于微信公众号“前端徐徐”,介绍了JavaScript中浅拷贝和深拷贝的概念及其实现方法。文章首先解释了数据类型的基础,包括原始值和对象的区别,然后详细介绍了浅拷贝和深拷贝的定义、底层逻辑以及常见的实现方式,如 `Object.assign`、扩展运算符、`JSON.stringify` 和手动实现等。最后,通过对比浅拷贝和深拷贝的区别,帮助读者更好地理解和应用这两种拷贝方式。
150 0
浅拷贝和深拷贝的区别?
|
3月前
|
JavaScript 前端开发 Java
什么是深拷贝,什么是浅拷贝
什么是深拷贝,什么是浅拷贝
77 0
|
7月前
|
安全 Java
深拷贝和浅拷贝的区别
深拷贝和浅拷贝的区别
|
8月前
|
消息中间件 Kubernetes NoSQL
构造函数、深拷贝、浅拷贝
构造函数、深拷贝、浅拷贝
|
C++
22 C++ - 深拷贝和浅拷贝
22 C++ - 深拷贝和浅拷贝
58 0
|
JSON 数据格式
深拷贝和浅拷贝、及实现方式
深拷贝和浅拷贝、及实现方式
107 0
深拷贝和浅拷贝
类里面会为我们实现默认的拷贝,这个做的是值的拷贝,但是假如对象里的数据成员在堆上开辟了内存资源,如果继续浅拷贝就会导致两根指针指向同一块资源,从而产生内存泄漏问题。但是深拷贝可以解决这个问题,本文将详细介绍深拷贝与浅拷贝。

热门文章

最新文章

下一篇
开通oss服务