//深克隆
function deepClone(obj){
var cloneObj
//当obj是一个简单值时
if(obj && typeof obj!=='object'){
cloneObj=obj
console.log("plain value")
}
//当obj是对象或者数组的时候
else if(obj && typeof obj==='object'){
console.log("object value")
cloneObj=Array.isArray(obj) ? [] : {}
//数组的元素或者对象的key
for(var key in obj){
if(obj.hasOwnProperty(key)){
//如果是对象或者数组
if(obj[key] && typeof obj[key]=== "object"){
cloneObj[key]=deepClone(obj[key])
}else{
cloneObj[key]=obj[key]
}
}
}
}
return cloneObj
}
var testObj={x:0,y:1,z:{a:3,b:4}}
var result=deepClone(testObj)
result.z.a=888
console.log(result)
console.log(testObj)
var testArray=[9,10,[2,4]]
var resultArray=deepClone(testArray)
resultArray[2][1]='aaa'
console.log(testArray)
console.log(resultArray)
JavaScript实现对象或者数组的深拷贝(深复制或者深克隆)
猜你喜欢
转载自blog.csdn.net/weixin_44157964/article/details/106909247
今日推荐
周排行