js实现深拷贝
递归实现深拷贝
var obj = {
arr : [1,2,[3,4]],
obbj : {a:{b:123}},
fn : function(){
console.log('方法')
},
c:'111s'
}
function deepClone(obj){
var newobj = Array.isArray(obj)?[]:{};
if(obj && typeof obj === 'object'){
for(let key in obj){
if(obj.hasOwnProperty(key)){
if(obj[key] && typeof obj[key] === 'object'){
newobj[key] = deepClone(obj[key])
}else{
newobj[key] = obj[key]
}
}
}
}else{
return newobj = obj
}
return newobj
}
var obj2 = deepClone(obj)
console.log(obj2);
obj2.arr=[11,22,33];
console.log(obj2.arr,obj.arr)
JSON实现深拷贝
function deepClone(obj) {
var newobj;
if(obj && typeof obj === 'object'){
newobj = JSON.parse(JSON.stringify(obj))
return newobj;
}else{
return newobj = obj
}
}
var obj2 = deepClone(obj)
console.log(obj2);
obj2.arr=[11,22,33];
console.log(obj2.arr,obj.arr)
lodash实现深拷贝
var obj = {
arr : [1,2,[3,4]],
obbj : {a:{b:123}},
fn : function(){
console.log('方法')
},
c:'111s'
}
function deepClone(obj){
var _ = require('lodash')
var newobj;
if(obj && typeof obj === 'object'){
newobj = _.deepClone(obj)
}else{
return newobj = obj
}
}
var obj2 = deepClone(obj)
console.log(obj2);
obj2.arr=[11,22,33];
console.log(obj2.arr,obj.arr)