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