function getType(data){
return Object.prototype.toString.call(data).slice(8,-1)
}
function deepClone(data){
let type = getType(data) , obj;
if(type === 'Array'){
obj = []
data.forEach(item=>obj.push( deepClone(item) ))
}else if(type === 'Object'){
obj = {}
for(let key in data){
obj[key] = deepClone(data[key])
}
}else{
return data
}
return obj
}
let obj1 = {a:1,b:{c:2,d:[3,4,{e:5}] }} ,
obj2 = deepClone(obj1);
obj2.b.d[2].e = 6
console.log(obj1 , obj2)
js深度克隆
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 注意点: 1.区分传入参数的类型 2.递归思想 3.map方法会产生一个新的数组 4. for in 可以得到对象...
- 转自:http://blog.csdn.net/qq_27090183/article/details/50823...