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 则实现的就是深复制

     
     
     
     
     
     
  • 相关阅读:
    变量作用域
    模块化编程-函数
    递归
    变量
    形参和实参
    函数返回值
    node.js+yarn环境centos7快速部署
    LINUX磁盘添加挂载
    分布式存储MINIO集群部署实例
    Docker取消默认https连接
  • 原文地址:https://www.cnblogs.com/nanshanlaoyao/p/5851373.html
Copyright © 2011-2022 走看看