直接上代码,我封装的方法如下:
function deepClone(origon,target){
var target = target || {}//如果没传target就给target赋值为{}
// var toStr = Object.property.toString
var toStr = Object.prototype.toString
var str = '[object Array]'
for(var prop in origon) {
if(origon.hasOwnProperty(prop)){//判断这个属性是不是自己身上的
if(origon[prop] !== null && typeof(origon[prop]) == 'object'){//对null进行处理
target[prop] = toStr.call((origon[prop])) == str ? [] : {}
console.log(toStr(origon[prop]))
deepClone(origon[prop],target[prop])
}else{//如果是原始值直接复制
target[prop] = origon[prop]
}
}
}
return target
}