分别给出浅克隆和深克隆实现

Posted wuqilang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分别给出浅克隆和深克隆实现相关的知识,希望对你有一定的参考价值。

浅克隆:

        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;
             

 

以上是关于分别给出浅克隆和深克隆实现的主要内容,如果未能解决你的问题,请参考以下文章

c#:浅克隆和深克隆,序列化和反序列化

Java -- 浅克隆和深克隆定义和实现

设计模式之:原型模式PrototypePattern的实现(浅克隆和深克隆)(浅表副本和深表副本)

Java浅克隆和深克隆

克隆_浅拷贝和深拷贝

java对象的浅克隆和深克隆