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

     
     
     
     
     
     
  • 相关阅读:
    斐波那契数列
    斐波那契数列
    .NET (C#)ASP.NET 应用程序与页面生命周期
    .NET (C#) Internals: ASP.NET 应用程序与页面生命周期(意译)
    如何使用:before和:after伪元素?
    学习的网址
    css盒子(box)
    利用Asp.Net来实现“网络硬盘”功能
    Jtemplates ${} or {{html}}的区别
    Jtemplate
  • 原文地址:https://www.cnblogs.com/nanshanlaoyao/p/5851373.html
Copyright © 2020-2023  润新知