zoukankan      html  css  js  c++  java
  • javascript 中的深复制 和 其实现方法

    首先,我们需要明白什么是深复制(侧重指对象方面)?

    在javascript中,复制分为浅复制和深复制,个人理解,浅复制就是直接将引用复制,复制前后的两个对象指向同一个内存地址,对其中一个进行操作,另外一个也会发生同样的改变,他们只是不同的指针指向了同一块内存。

    而深复制是开辟了一个新的内存地址,把其内容完完全全的复制到这个新的内存地址中,之后对这个对象的任何操作都不会影响到其复制的对象(既两边的操作都不会影响彼此),他们成了两个完全独立的对象。
    那么如何实现所谓的深复制呢?
     
    可以通过遍历+递归实现深复制。
    function deepClone ( obj ) {
        if( typeof obj != "object" ){
            return obj ;
        }  
    
        var newObj = obj.constructor === Array ? [] : {};  //开辟一块新的内存空间
    
        for( var i  in  obj ) {
            newObj [ i ] = deepClone ( obj [ i ] );                 //通过递归实现深层的复制 
        }

      return newObj; }

    另外,可以通过使用一些框架或库里的方法来实现深复制

    比如 jquery 里的 extend 方法:extend(deep, object)  // 第一个参数为可选参数  ,默认为 false  如果传入了 true 则实现的就是深复制

     
     
     
     
     
     
  • 相关阅读:
    drf中ListSerializer源码
    drf中get/post/delete/put/patch五大接口
    drf三大认证组件
    drf序列化与反序列化,基表的概念
    drf序列化与反序列化
    drf解析,异常,响应模块
    drf 简介以及部分源码分析
    vue学习第四天
    vue学习第三天
    MySQLStudy——索引
  • 原文地址:https://www.cnblogs.com/nanshanlaoyao/p/5851373.html
Copyright © 2011-2022 走看看