• 简述深浅拷贝原理


     //数组浅拷贝
             var arr=["xjz","is","a","superman"];
    
             //slice
             
             var new_arr=arr.slice();
    
             new_arr[0]="zxb";
    
             console.log("before:"+arr);
    
             console.log("after:"+new_arr);
             
    
    
             //concat
             
    
             var new_arr=arr.concat();
    
             new_arr[0]="bb";
    
    
              console.log("before:"+arr);
    
              console.log("after:"+new_arr);

    //这个方法只能是拷贝基本类型 如果数组项是引用类型的话 只会拷贝引用
    //所以当以后改变这个引用的时候 都会发生改变 很麻烦
    //只是适用于存储基本类型的数组的拷贝

       //深拷贝
               //如果只是简单地数据类型 可以json解析
               //function undefined null NAN Infinity 拷贝不了
    
              var json=["xjz","super","man",{
                    
                    "age":12,
                    "name":"xjz"
    
              },function(){return "dadada"},undefined,null,NaN,Infinity];
    
             
              var newJSON=JSON.parse(JSON.stringify(json));
    所以还需要自己写一个拷贝  啊哈哈哈哈哈
     

     //for in 不可以获取不可枚举的属性
     //hasOwnProperty 会忽略原型链上的属性
     //Object.getOwnPropertyNames 可以获取可枚举和不可枚举的属性
     //深拷贝

    function deepCopy(obj){
                      
                 if(!(obj && typeof obj==="object")){
    
                            return;
                     }
    
                   else{
    
                      var copyResult = obj instanceof Array ?[]:{};
    
                         for(var key in obj){
                               
                            if(obj.hasOwnProperty(key)){
    
                               copyResult[key]=typeof obj[key] ==="object"?deepCopy
                               (obj[key]):obj[key];
    
                             }
    
                         }
    
                    }
    
                return copyResult;
    
            }
    
    
          var obj={
    
              "data":[{"age":12},{"name":"xjz"}, 
    
               {"adress":"ChangChun"}],
    
                callBack:function(){
                  
                  console.log("my love is zxb");
    
              }
    
          };
  • 相关阅读:
    SCRUM团队
    SCRUM的四大支柱
    SCRUM的五个价值观
    SCRUM的五个事件
    SCRUM的三个工件
    SCRUM团队的三个角色
    经验性过程
    Windows UWP开发系列 – RelativePanel
    Windows UWP开发系列 – 控件默认样式
    Windows UWP开发系列 – 3D变换
  • 原文地址:https://www.cnblogs.com/liveoutfun/p/9690435.html
Copyright © 2020-2023  润新知