zoukankan      html  css  js  c++  java
  • 分别给出浅克隆和深克隆实现

    浅克隆:

            var obj1=obj;
            var obj1=Object.assgin({},obj);
            for(var prop in obj){obj1[prop]=obj[prop]}
            var obj1={...obj};

    深克隆:

        var obj1=JSON.parse(JSON.stringify(obj));==========无法复制函数和undefined

    牛逼的来了=========================除了DOM和二进制流

             function cloneObj(source,target){
                     if(!target){
                         if(source.constructor===RegExp){
                             target=new RegExp(source.source,source.flags);
                         }else{
                             target=new source.constructor();
                         }
                     }
                     var names=Object.getOwnPropertyNames(source);
                     for(var i=0;i<names.length;i++){
                         var desc=Object.getOwnPropertyDescriptor(source,names[i]);
                         if(typeof desc.value==="object" && desc.value!==null){
                             var values=cloneObj(desc.value);
                             Object.defineProperty(target,names[i],{
                                 enumerable:desc.enumerable,
                                 configurable:desc.configurable,
                                 writable:desc.writable,
                                 value:values
                             });
                         }else{
                             Object.defineProperty(target,names[i],desc);
                         }
                     }
                     return target;
                 }
  • 相关阅读:
    数据预处理 --Sklearn preprocessing的理解
    平衡二叉树的插入旋转
    二叉树
    malloc/free 与 new/delete的区别
    C/C++ const总结
    C/C++ static总结
    C++未定义行为
    c++虚函数表
    visual studio mfc中 cout 输出
    ERROR C4996 UNSAFE
  • 原文地址:https://www.cnblogs.com/wuqilang/p/11366972.html
Copyright © 2011-2022 走看看